我想做的是找到内容块中的所有匹配项,但忽略标记内的任何内容,以便在preg_replace_callback()中使用。
例如:
test
<a href="test.com">test title</a>
test
在这种情况下,我希望第一行匹配,第三行匹配,但不希望url匹配,也不希望a标签之间的标题匹配。
我有一个正则表达式,感觉很接近:
#(?!<.*?)(\btest\b)(?![^<>]*?>)#si
(这与网址部分不匹配)
但是如何修改正则表达式以排除a和/ a之间的“测试”?
答案 0 :(得分:0)
如果总是相同的模式,则可以使用[A-Z]或[A-Za-z]之类的组合
答案 1 :(得分:0)
我最终自己解决了。这种正则表达式模式可以满足我的要求:
#(?!<a[^>]*?>)(\btest\b)(?![^<]*?<\/a>)#si