0

我正在尝试构建正则表达式以从没有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>

谢谢!

4

2 回答 2

2

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

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

想要的 url 将在捕获组 #1 中。例如,在 Ruby 中它将是:

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

既然它在否定前瞻[^>]*?中接受之前,或者其他任何东西都可以在之前。如果之后,它当然也可以。relhrefrelhrefrel

于 2011-04-01T08:31:54.750 回答
0

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

如果您使用的是 .net 正则表达式,那么

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

数据位于名为URL或组 1的组中

于 2011-04-01T08:26:12.093 回答