正则表达式解析超链接和描述

Kri*_*mar 3 html regex

C#:解析超链接及其描述的优秀正则表达式是什么?

请考虑不区分大小写,空白区域以及在HREF标记周围使用单引号(而不是双引号).

还请考虑获取标签中包含其他标签的超链接,<a>例如<b><i>.

Kon*_*lph 6

只要没有嵌套标签(并且没有换行符),以下变体就可以正常工作:

<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