我已经编写了这个正则表达式代码:
((https?|ftps?):\/\/[^"<\s]+)(?![^<>]*?>|[^<>]*?<\/)
第一组捕获HTML中的所有链接,第二组是负向预查以排除任何作为属性和内容的标签内部的任何部分。
我希望只有标签被排除 - 所以解决方案可能是仅修改最后一个术语为:
[^<>]*?<\/a>
但是如果我有嵌套标签(例如
<b></b>
在<a>
内),那么现在就会出现问题。
这是我正在处理的示例:https://regex101.com/r/lM3hC5/6 (应该有10个匹配项)。
否定先行断言对我来说仍然很棘手。我认为以下内容应该有效,但它却无效:
(?!<a.+?<\/a>)
https://regex101.com/r/hT1cG5/1
这些是最近帮助我的讨论: