我正在尝试编写一个正则表达式来匹配boundery上的单词,因为文本是html我需要避免<a>here more words</a>
中的单词。
我现在的正则表达式是:/\bword\b/u
示例文字:
<p>Example lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur <a href="">porta lorem nec</a> tortor laoreet gravida.</p>
搜索单词lorem
只能在开头而不是<a>
中替换。
答案 0 :(得分:6)
你可以使用一些黑暗力量,如下所示:
<a[^>]*>.*?</a\s*>(*SKIP)(*FAIL)|\blorem\b
让我们分解一下:
<a[^>]*> # match an opening "a" tag
.*? # match anything ungreedy until ...
</a\s*> # match a closing "a" tag
(*SKIP)(*FAIL) # skip it
| # or
\blorem\b # match lorem with boundaries
基本上我们首先跳过所有a
代码,然后匹配lorem
。
答案 1 :(得分:1)
/u
可能不合适或不需要。它通常用PHP表示unicode,但例如在JavaScript中不允许
或者可能是您在PHP中使用preg_match
而不是preg_match_all