【问题标题】:regex - filter for containing strings, except if contains another specific stringregex - 过滤包含字符串,除非包含另一个特定字符串
【发布时间】:2017-09-07 08:23:55
【问题描述】:

我已经阅读了几个关于正则表达式的教程,并尝试了在线正则表达式测试器,但似乎无法为我希望它触发的匹配找出合适的正则表达式。
我很感激帮助创建一个导致 true 时的正则表达式

  • 给定的字符串包含“AI [num]”,其中 [num] 是一个整数。在这之前或之后可以有任何东西,甚至“DAI 5b”也应该匹配。 但是,给定的字符串不应在包含“AI 2”时返回 true,同样允许在此之前或之后的任何内容。
  • 如果这些情况都不是,它应该返回 false

这意味着

  • "blabla blabla" => 错误
  • "blabla AI 6" => 是的
  • "blabla AI 4b" => 是的
  • "blabla AI 2" => 错误
  • "blabla AI 2b" => 错误
  • "blabla AI 6 blabla AI 2b" => 错误

我真的希望有人能指出我正确的方向!

【问题讨论】:

    标签: regex string match


    【解决方案1】:

    你可以使用这个正则表达式:

    AI (?!2)\d+(?!.*AI)
    

    RegEx Demo

    RegEx 拆分:

    • AI:匹配AI,后跟一个空格
    • (?!2):使用否定前瞻断言我们在下一个位置没有 2
    • \d+:匹配一位或多位数字
    • (?!.*AI):使用负前瞻确保我们没有另一个 AI 提前

    使用MULTILINE 修饰符,您也可以使用这个正则表达式:

    ^(?!.*AI 2).*AI \d+
    

    RegEx Demo 2

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 2014-05-16
      • 2016-07-22
      • 2010-11-22
      • 2022-08-19
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多