我正在尝试使用 PCRE2 方言从 HTML 文本中获取所有出现的单词“apple”的正则表达式。但不包括当苹果这个词是链接的一部分时。
我是 Regex 的初学者,可能我犯了一个很简单的错误。
\bapple\b
因此,以下文本必须匹配第一个匹配项,而不是第二个和第三个匹配项。
Lorem ipsum apple sit amet, consectetur <a href="#">apple</a> elit <a href="/test/apple">lorem</a>.
我做错了什么?
最佳答案
在 PCRE 中,你可以使用这个正则表达式:
~(?is)<a .*?</a>(*SKIP)(*F)|\bapple\b~
正则表达式详细信息:
-
(?is)
: 启用忽略大小写和 DOTALL 模式 -
<a .*?</a>
: 匹配来自<a
的文本至</a>
跳过所有<a>
标记 -
(*SKIP)(*F)
: 一起提供了一个很好的限制替代方案,您不能在 PCRE 正则表达式中进行可变长度的后视 -
|
: 或者 -
\bapple\b
: 匹配词apple
关于regex - 捕获不属于链接的特定单词的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66075884/