【问题标题】:REGEX expression for consecutive characters连续字符的 REGEX 表达式
【发布时间】:2015-04-07 01:15:48
【问题描述】:

在过去的两个小时里,我一直停留在这个正则表达式上。 您将如何编写一个正则表达式,其中每对连续的“E”出现在每对连续的“O”之前。例如,您的 DFA 应该接受字符串“GOODBOY”、“FEEDME”、“HELLO”和“FEEDMEGOOD”,但不能接受“LOOKITSDEEP”。

我对正则表达式很陌生,我正在使用现代 html 正则表达式机器。

至于我目前尝试过的,我知道它会接受4个案例:

  • 案例 1:没有 EE 或 OO
  • 案例2:有OO但没有EE
  • 案例3:有EE但没有OO
  • 案例4:OO之前有EE

但不接受以下情况:

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

我尝试做的是用案例号 5 做一个“不”案例,我想出的是:

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

但是,这似乎不起作用:(

非常感谢您的帮助!!!

【问题讨论】:

  • 请向我们展示您尝试过的一些东西。
  • 如果您在过去的两个小时内一直被困...,在我看来,您至少会有一些努力没有努力包括在你的问题中,不是吗?当您edit 包含它们时,您可能还包含有关您正在使用的正则表达式引擎的信息,因为不同的引擎具有不同的功能和语法差异。
  • 我已经添加了我的作品!

标签: regex dfa


【解决方案1】:

你在正确的轨道上,试图匹配“不应该”的情况并反转结果。这主要是您缺少的语法。以下是我的做法:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    相关资源
    最近更新 更多