代码之家  ›  专栏  ›  技术社区  ›  Seephor

查找正则表达式

  •  4
  • Seephor  · 技术社区  · 14 年前

    我有一个关于为给定语言找到正则表达式的简单问题。

    我有语言 L 在哪里?

    L = { W _0,1*: W 只有一对连续的零

    我第一次尝试是 L ((0+1)*00(0+1)*),但我注意到问题在于我的位置(0+1)*,因为如果选择0,它可以多为零,从而导致多对连续零。

    我也知道,可能的情况是,前面、中间和结尾都有两个零。我只是不太确定如何为它创建正则表达式。

    任何帮助都非常感谢。

    4 回复  |  直到 7 年前
        1
  •  6
  •   Gumbo    14 年前

    试试这个:

    1*(011*)*00(11*0)*1*

    解释:

    • 1** :任何数量的前导1
    • (011*)。* :如果00之前有一个0,则后面不能跟另一个0,因此只允许一个或多个1_s;此模式可以重复任意次数。
    • 00 :两个0_
    • (11*0)* :如果00之后有0,则前面不能有其他0,因此只能有一个或多个1;此模式可以重复任意次数
    • 1** :任何数量的尾随1_
        2
  •  2
  •   josepainumkal    9 年前

    这个问题的最佳答案是 (1+01)*00(1+10)*

        3
  •  1
  •   Arthur Rizzo    14 年前

    我想应该是这样的

    ((1*)(01)*))* 00 ((11*)0)*1*
    
        4
  •  0
  •   Eli Bendersky    14 年前

    顺序:

    • 除了00以外的任何东西,以1结尾
    • 00
    • 除了00,从1开始