我的 PHP 脚本中有一个正则表达式,如下所示:
/(\b$term|$term\b)(?!([^<]+)?>)/iu
这与 $term 中包含的单词匹配,只要前后有单词边界并且它不在 HTML 标记内即可。
但是,这在非 ASCII 情况下不起作用,例如俄语文本。有没有办法让它发挥作用?
我可以用
得到几乎一样好的结果/(\s$term|$term\s)(?!([^<]+)?>)/iu
但这显然更受限制,并且由于此正则表达式是关于突出显示搜索词的,因此它存在突出显示中包含空格的问题。
我读过 this StackOverflow question about the problem ,但它没有帮助 - 无法正常工作。在那个例子中,捕获是相反的(当我需要捕获搜索词时,捕获搜索词之外的文本)。
有什么方法可以让它工作吗?谢谢!
最佳答案
你可以使用 zero-width lookahead/lookbehind assertions断言您要匹配的内容左右两侧的字符不是字母?
https://stackoverflow.com/questions/5667226/