寻找正则表达式

时间:2010-09-20 17:14:03

标签: regex theory

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

我获得语言 L ,其中:

  

L = { w ∈{0,1} *: w 只有一对连续的零}

我的第一次尝试是尝试 L ((0 + 1)* 00(0 + 1)*),但我发现问题与我所拥有的一样(0 + 1)*因为如果选择0,它可以更多为零,从而导致一对以上的连续零。

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

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:6)

试试这个:

  

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

解释:

  • 1 * :任何数量的领先1
  • (011 *)* :如果00之前有0,则不能再跟0,因此只允许一个或多个1;这种模式可以重复任何次数
  • 00 :两个0的
  • (11 * 0)* :如果在00之后有一个0,则它必须不在另一个0之前,因此只有一个或多个1;这种模式可以重复任何次数
  • 1 * :任意数量的尾随1

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我相信它会像这样

((1*)(01)*))* 00 ((11*)0)*1*

答案 3 :(得分:0)

序列:

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

答案 4 :(得分:0)

我的答案是: (1 + 01) 00(1 + 10) **

说明:

连续的零不应该在另一个零之前或之后。 因此,00之前应为1,可以是1或01。 后面可以跟1或10。