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

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

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

例如:

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