给定以下正则表达式和主题文本,为什么负前瞻仅适用于命名捕获组的最后一个字符URL
?
// Regex
(?<URL>(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*)(?!'|"|(</a))
// Subject text
<p><a href="http://example.com">http://example.com</a> and http://example.com</p>
这个正则表达式有一个否定的前瞻(?!"|(</a))
,它试图不匹配<a>
标签内的 URL。这是通过检查 URL 是否后跟引号 ('
或"
) 或结束</a
标记来完成的。
我得到以下结果
http://example.co
http://example.co
http://example.com
我预计负前瞻适用于整个捕获组,而不仅仅是最后一个字符。这可能吗?我究竟做错了什么?我希望只匹配http://example.com
要捕获的最后一个实例。