我正在尝试构建正则表达式以从 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>
谢谢!
答案 0 :(得分:2)
以下正则表达式将完成这项工作:
<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"
想要的网址将位于捕获组#1中。例如。在Ruby中它将是:
if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
match = $~[1]
end
由于它在否定前瞻中的[^>]*?
之前接受rel
,href
或其他任何内容都可以在rel
之前。如果href
位于rel
之后,那么它当然也可以。
答案 1 :(得分:0)
试试这个
<(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"]([^>"]*)[^>]*?>
如果您正在使用.net正则表达式
<(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"](?<URL>[^>"]*)[^>]*?>
数据位于名为网址或第1组
的组中