Regex 用于提取具有指定属性的链接的正则表达式
我正在尝试构建正则表达式,以便从没有rel=“nofollow”的文本中提取链接 例如:Regex 用于提取具有指定属性的链接的正则表达式,regex,hyperlink,extract,nofollow,Regex,Hyperlink,Extract,Nofollow,我正在尝试构建正则表达式,以便从没有rel=“nofollow”的文本中提取链接 例如: aiusdiua asudauih 谢谢 试试这个 ]*?> 数据位于名为URL或组1的组中,以下正则表达式将完成此工作: <a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)" ]*?rel=“nofollow”)[^>]*?href=“(*?” 想要的URL将位于捕获组#1中。例如,在Ruby中,它将是: if input =~ /<a
aiusdiua asudauih
谢谢 试试这个
]*?>
数据位于名为URL或组1的组中,以下正则表达式将完成此工作:
<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"
]*?rel=“nofollow”)[^>]*?href=“(*?”
想要的URL将位于捕获组#1中。例如,在Ruby中,它将是:
if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
match = $~[1]
end
如果输入=~/]*?rel=“nofollow”)[^>]*?href=“(.*)”/
匹配=$~[1]
结束
由于它在负前瞻中接受
[^>]*?
在rel
之前,因此href
或任何其他内容都可以在rel
之前。如果href
在rel
之后,当然也可以。。。。你有没有可能用解析器代替regex?没有,我想用regex。我的经验是,使用regex时一定要小心。*?@regexhatchs:为什么在使用*?
@regexhatchs时要小心?我同意。必须小心所有不接受任何内容或不受限制的量词。@regexhacks,因为它接受[^>]*?
在rel
之前,在负向前看中,href
或任何其他内容可以出现在rel
之前。如果href在rel之后,当然也可以。@Staffan感谢您的详细介绍。你真是天才!我认为您必须解决这个答案中的两个问题:1)现在它将找到实际包含rel=“nofollow”
的字符串,但问题要求的是相反的。2) 如果a
标记中href
位于rel
之前,它将不匹配。它仍将匹配
,不是吗?我想你还需要再编辑一次正则表达式:-)是的!应该这样。你的比我的好!:-)我不会编辑。支持答案。
if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
match = $~[1]
end