当前位置: 代码迷 >> C# >> C#关与正则匹配链接的问是,这段代码如何修改
  详细解决方案

C#关与正则匹配链接的问是,这段代码如何修改

热度:43   发布时间:2016-05-05 03:29:46.0
C#关与正则匹配链接的问是,这段代码怎么修改?


substrUrl 是链接的值,一般情况是能匹配,但是像这样链接里带了很多空格的,就匹配不出来了,求高手看下这个正则怎么改进,使带空格时也能取出

代码如下:
   Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
   MatchCollection mc = reg.Matches(substrre);
   string substrUrl = string.Empty;
   string substrText = string.Empty;
   foreach (Match m in mc)
   {
        substrUrl = m.Groups["url"].Value;//得到href值                
        substrText = m.Groups["text"].Value.Trim();//得到<a><a/>中间的内容
   } 
------解决思路----------------------
@"(?is)<a[^>]*?href=(['""]?)\s*(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>"

试试这个
------解决思路----------------------
相关部位加一个 \s* 就行了,表示任意个空白字符,1楼正解。
Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)\s*(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");

------解决思路----------------------
@"<a[^>]*? href=""\s*(?<url>[^""]*?)""[^>]*?>(?<text>[^<]*?)</a>"

------解决思路----------------------
Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(\s*?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
  相关解决方案