用于提取具有指定属性的链接的正则表达式

时间:2011-04-01 08:11:18

标签: regex hyperlink extract nofollow

我正在尝试构建正则表达式以从 rel =“nofollow”的文本中提取链接。

示例:

aiusdiua asudauih <a rel="nofollow" hre="http://uashiuadha.asudh/adas>adsaag</a> uhwaida <br> asdgydug <a href="http://asdha.sda/uduih/dufhuis>aguuia</a>

谢谢!

2 个答案:

答案 0 :(得分:2)

以下正则表达式将完成这项工作:

<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"

想要的网址将位于捕获组#1中。例如。在Ruby中它将是:

if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
    match = $~[1]
end

由于它在否定前瞻中的[^>]*?之前接受relhref或其他任何内容都可以在rel之前。如果href位于rel之后,那么它当然也可以。

答案 1 :(得分:0)

试试这个 <(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"]([^>"]*)[^>]*?>

如果您正在使用.net正则表达式

<(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"](?<URL>[^>"]*)[^>]*?>

数据位于名为网址或第1组

的组中