捕获不属于链接的特定单词的所有出现次数

我正在尝试使用来自 HTML 文本的 PCRE2 方言的正则表达式获取单词“apple”的所有出现。但不包括苹果这个词是链接的一部分。
我是 Regex 的初学者,可能我犯了一个很简单的错误。

bappleb

因此,以下文本必须匹配第一次出现,但不能匹配第二次和第三次出现。

Lorem ipsum apple sit amet, consectetur <a href="#">apple</a> elit <a href="/test/apple">lorem</a>. 

我究竟做错了什么?

回答

在 PCRE 中,你可以使用这个正则表达式:

~(?is)<a .*?</a>(*SKIP)(*F)|bappleb~

正则表达式演示

正则表达式详情:

  • (?is): 启用忽略大小写和 DOTALL 模式
  • <a .*?</a>:从匹配的文本<a,以</a>跳过所有<a>踏歌
  • (*SKIP)(*F):一起提供了一个很好的限制替代方案,您不能在 PCRE 正则表达式中进行可变长度的后视
  • |: 或者
  • bappleb: 匹配单词 apple

以上是捕获不属于链接的特定单词的所有出现次数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>