正则表达式 - 包含字符串的过滤器,除非包含另一个特定字符串

时间:2017-09-07 08:23:55

标签: regex string match

我已经阅读了几个关于正则表达式的教程,并且已经尝试过在线正则表达式测试器,但似乎无法找到适合我想要触发的匹配的正则表达式。

,我非常感谢帮助创建一个真正的正则表达式
  • 给定的字符串包含“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”=>假

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

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

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

RegEx Demo

RegEx分手:

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

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

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

RegEx Demo 2