C#:解析超链接及其描述的优秀正则表达式是什么?
请考虑不区分大小写,空白区域以及在HREF标记周围使用单引号(而不是双引号).
还请考虑获取标签中包含其他标签的超链接,<a>例如<b>和<i>.
只要没有嵌套标签(并且没有换行符),以下变体就可以正常工作:
<a\s+href=(?:"([^"]+)"|'([^']+)').*?>(.*?)</a>
Run Code Online (Sandbox Code Playgroud)
一旦嵌套标签发挥作用,正则表达式就不适合解析.但是,您仍然可以通过应用现代解释器的更高级功能(取决于您的正则表达式计算机)来使用它们.例如.NET正则表达式使用堆栈; 我找到了这个:
(?:<a.*?href=[""'](?<url>.*?)[""'].*?>)(?<name>(?><a[^<]*>(?<DEPTH>)|</a>(?<-DEPTH>)|.)+)(?(DEPTH)(?!))(?:</a>)
Run Code Online (Sandbox Code Playgroud)
资料来源:http://weblogs.asp.net/scottcate/archive/2004/12/13/281955.aspx