连续字符的REGEX表达式

时间:2015-04-07 01:15:48

标签: regex dfa

过去两个小时我一直坚持这个正则表达式。 你怎么写一个正则表达式,其中每对连续的'E'出现在每对连续的'O'之前。例如,您的DFA应接受字符串“GOODBOY”,“FEEDME”,“HELLO”和“FEEDMEGOOD”,但不接受“LOOKITSDEEP”。

我是regex的新手,我使用的是现代的html正则表达式机器。

至于我迄今为止所尝试的内容,我知道它会接受4个案例:

  • 案例1:没有EE或OO&#39>
  • 案例2:有一个OO但没有EE
  • 案例3:有EE但没有OO
  • 案例4:在OO之前存在EE

但是,它不接受以下情况:

  • 案例5:如果在EE之前有OO。

我试图做的是做一个“不”。案例编号为5的案例以及我提出的案例是:

[^[A-Z]*(OO)+[A-Z]*(EE)+]

然而,这似乎不起作用:(

帮助真的很感激!!!

1 个答案:

答案 0 :(得分:1)

你正走在正确的轨道上,试图匹配"不应该"案例并反转结果。它主要是您缺少的语法。以下是我将如何做到这一点:

^(?!.*OO.*EE)[A-Z]*$

(?!...)是一个负面的预测;它意味着"如果此时可以匹配此表达式,则失败。" ^将匹配锚定在字符串的开头;没有它,正则表达式引擎将继续尝试匹配从每个连续位置开始。 [A-Z]*$确保字符串完全由大写字母组成。