仅当前面没有另一个字符串时才匹配字符串[重复]

Posted

技术标签:

【中文标题】仅当前面没有另一个字符串时才匹配字符串[重复]【英文标题】:Match string only when not preceded by another string [duplicate] 【发布时间】:2017-08-09 10:19:09 【问题描述】:

我想在所有情况下都匹配包含MYSTUFF 的字符串,除了MYSTUFF 前面有ENABLED_ 时。以便以下内容匹配:

MYSTUFF m_MYSTUFF MYSTUFFIsGreat allOf_MYSTUFF

但以下不会:

ENABLED_MYSTUFF m_ENABLED_MYSTUFF ENABLED_MYSTUFFIsGreat allOf_ENABLED_MYSTUFF

我尝试了几种使用负前瞻(\w*(?!.*ENABLED_)MYSTUFF\w* 的变体)和条件((?(?!=ENABLED_)(MYSTUFF)) 的变体)的变体,但我没有设法得到我想要的结果。

我想要的甚至可以用正则表达式实现吗?

【问题讨论】:

【参考方案1】:

您可以通过使用negative look-behind 断言来完成此操作...

\w*(?<!ENABLED_)MYSTUFF\w*

regex demo

【讨论】:

我确实想匹配整个单词。 编辑问题以明确我需要整个单词。

以上是关于仅当前面没有另一个字符串时才匹配字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配捕获组前面没有某些字符

仅当前面有 (\d2 -) 时才在 html 中查找链接 (href) [重复]

仅当字符串包含匹配项时才替换字符串周围的标签

仅当字符串的一部分前面没有某些字符时,如何匹配它?

仅当没有给定前缀具有任意数量的空格时才匹配单词

添加 www 的 htaccess 条件。仅当它在 url 中不包含字符串时才到 url