捕获不属于链接的特定单词的所有出现次数
我正在尝试使用来自 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