除标记中的所有短语-regexpr

除标记中的所有短语-regexpr,regex,preg-replace,preg-match,preg-match-all,Regex,Preg Replace,Preg Match,Preg Match All,我想创建一个正则表达式来标记除了A标记中的短语以外的所有短语。 我想用它来取代它的链接。 我可以用一个正则表达式来描述它吗? 这是我失败的尝试:要排除由标记包围的匹配项,请先匹配标记的零件,然后将其与\K一起丢弃。此匹配还应通过交替提供空字符串,以匹配不以标记开头的子字符串: (?:<a[^>]+>.*?<\/a>\K|)(^|\s|,|;|:|\.)(Test)($|\s|,|;|\.|\b) (?:这里有一个可行的黑客解决方案:(?:。确保丢弃空匹配:)@de

我想创建一个正则表达式来标记除了
A
标记中的短语以外的所有短语。 我想用它来取代它的链接。 我可以用一个正则表达式来描述它吗?
这是我失败的尝试:

要排除由标记包围的匹配项,请先匹配标记的零件,然后将其与
\K
一起丢弃。此匹配还应通过交替提供空字符串,以匹配不以标记开头的子字符串:

(?:<a[^>]+>.*?<\/a>\K|)(^|\s|,|;|:|\.)(Test)($|\s|,|;|\.|\b)

(?:

这里有一个可行的黑客解决方案:
(?:。确保丢弃空匹配:)@degant要除去空匹配,您可以使用跳过和失败技巧
/谢谢@HamZa这是一个巧妙的技巧。我不明白为什么在
*失败
?@degant检查之前需要
*跳过
out@degant退房