【问题标题】: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)) 的变体)的变体,但我没有设法得到我想要的结果。

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

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

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

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

    regex demo

    【讨论】:

    • 我确实想匹配整个单词。
    • 编辑问题以明确我需要整个单词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-10-22
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多