日期:2014-05-18  浏览次数:20724 次

字符串处理,正则,跪了,求大神
背景:1.有域名aa.com,域名bb.com;
  2.另有一段文本内容,其中可能有包含"aa.com"或者"bb.com"(也可能是二级域名)的链接或者地址。

  需求:如果文本中包含aa.com,bb.com的字符串是链接,则不处理;如果不是链接,将此url加上新页面打开的链接。

  举个例子,文本1为:请登录www.a.aa.com/xxx.htm ,将www.a.aa.com/xxx.htm 加上链接。-><a href='www.aa.com/xxx.htm' target='_blank'>www.a.aa.com/xxx.htm</a>
  文本2为:请登录<a href='http://www.a.aa.com/xxx.htm'>xxx</a> 则跳过不处理  

  小弟正则稀烂,求大神解围。分不多,不成敬意。


------解决方案--------------------
C# code

            string source = "www.a.aa.com/xxx.htm<a href='http://www.a.aa.com/xxx.htm'>xxx</a>";
            Regex reg = new Regex(@"(?is)(?<!<a href[^>]*?)(?<v1>[^(href)]+)/([^<>]+).htm");
            source = reg.Replace(source, "<a href='" + "${v1}" + "'target='_blank'>" + "${v1}"+"</a>");
            MessageBox.Show(source);

------解决方案--------------------
yourhtml=Regex.Replace(yourhtml,@"(?i)(?<!<a\s+href=(['""])?(?:https?://)?)www\.[ab]\.(?:aa|bb)\.com[^'""<\s]+","<a href='$0' target='_blank'>$0</a>");