锚标记的正则表达式

时间:2013-07-15 13:14:30

标签: asp.net regex

想要从锚标记获取href链接。我正在使用

regex = @"<a[^>]*?href\s*=3D\s*[""']?    ([^'"" >]+?)[ '""][^>]*?>". 

如果href在单行中,我可以成功,但在以下

中失败
Text = <a target=3D"_blank" hr=
ef=3D"http://abc.com/blog/check-your-cars-health-before-going-on-lo=
ng-trip/">

正在阅读的文件是eml文件而不是html文件 请为上面的

建议正确的正则表达式

2 个答案:

答案 0 :(得分:2)

您不应该真正尝试使用正则表达式解析HTML,this本质上就是原因。您可以查看强大的HTML处理库,例如HTML Agility Pack

This之前的SO帖子可能会有一些与你正在做的事情有关的事情。

答案 1 :(得分:0)

描述

这个正则表达式将:

  • 在锚标记
  • 中找到href属性值
  • 避免一些困难的边缘案例

<a\b(?=\s)(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\shr=.*?ef=3D['"]([^"]*)['"]?)(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?>.*?<\/a>

enter image description here

实施例

示例文字

注意onmouseover

中的difficutl边缘情况

<a onmouseover=' href="NotTheHrefYoureLookingFor" ; funRotator(href) ; ' target=3D"_blank" href="http://abc.com/blog/check-your-cars-health-before-going-on-lo= ng-trip/">link text </a>

捕获论坛

[0] => <a onmouseover=' href=" hr=
ef=3D NotTheHrefYoureLookingFor" ; funRotator(href) ; ' target=3D"_blank" hr=
ef=3D"http://abc.com/blog/check-your-cars-health-before-going-on-lo=
ng-trip/">link text
</a>
[1] => http://abc.com/blog/check-your-cars-health-before-going-on-lo=
ng-trip/