匹配字符串中不在正则表达式链接锚点中的单词


Match words in a string which are not in anchor of link with regex

我试图在字符串中找到一些不在链接锚点中的单词(或表达式:像两个单词((字符串包含html代码,通常是utf-8编码(。计划是在那之后用一些链接替换这些词。

我不太擅长正则表达式,我

搜索了网络和堆栈溢出,发现了两种对我有帮助的正则表达式模式,但它们中的每一个都有一个问题。我希望有人能帮助我结合这两个例子来得到一个好的例子。

第一种模式:/('.$tag.')(?![^<]*<'/a>)/is

这种模式,找到单词,但如果通过示例我试图在字符串中找到"express":

In computing, a regular expression provides a concise and flexible means...

..我不希望找到匹配项,但是在"表达式"一词中找到匹配项。

第二种模式:''(?!((<.*?)|(<a.*?)))('b'.$tag.''b)(?!(([^<>]*?)>)|([^>]*?</a>))''is

这种模式没有上一个问题,但是如果单词或表达式,我试图找到最后一个字符作为特殊的 utf-8 字符,那么我没有得到匹配。

示例词:apă

示例字符串:...care transformă umiditatea din aer în apă potabilă. Dacă iniţial a fost creată pentru situaţia ţărilor...

假设第二个正则表达式适合您(我还没有测试过它,我真的认为您不应该对此类事情使用正则表达式(,您需要做的就是添加一个u修饰符,如@hakre所说:

''(?!((<.*?)|(<a.*?)))('b'.$tag.''b)(?!(([^<>]*?)>)|([^>]*?</a>))''isu

就个人而言,我会使用DOMDocument来完成这项任务。