【发布时间】:2012-02-21 08:19:19
【问题描述】:
我有一个非常好的正则表达式,它可以将字符串中的 url 替换为可点击一次。
string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])";
现在,我如何让它忽略已经可点击的链接和图片?
所以它忽略了下面的字符串:
<a href="http://www.someaddress.com">Some Text</a>
<img src="http://www.someaddress.com/someimage.jpg" />
例子:
The website www.google.com, once again <a href="http://www.google.com">www.google.com</a>, the logo <img src="http://www.google.com/images/logo.gif" />
结果:
The website <a href="http://www.google.com">www.google.com</a>, once again <a href="http://www.google.com">www.google.com</a>, the logo <img src="http://www.google.com/images/logo.gif" />
完整的 HTML 解析器代码:
string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])";
Regex r = new Regex(regex, RegexOptions.IgnoreCase);
text = r.Replace(text, "<a href=\"$1\" title=\"Click to open in a new window or tab\" target=\"_blank\" rel=\"nofollow\">$1</a>").Replace("href=\"www", "href=\"http://www");
return text;
【问题讨论】:
-
好,难以阅读,难以维护,使用 HtmlParser 很容易......
-
您是否尝试使用正则表达式解析 HTML?
-
我已经回答了这个问题here
-
是的,我正在尝试解析 HTML,我刚刚更新了问题并粘贴了所有代码。