查找正则表达式

问题描述 投票:0回答:6

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

我获得了语言 L,其中:

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

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

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

非常感谢任何帮助。

regex theory
6个回答
8
投票

试试这个:

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

解释:

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

3
投票

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


1
投票

我相信会是这样的

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

0
投票

顺序:

  • 除 00 之外的任何内容,以 1 结尾
  • 00
  • 从 1 开始,除了 00 以外的任何数字

0
投票

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

说明:

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


0
投票

错误尝试00110011一定不能满足 但这里已经很满足了 首先取 00 对,然后取 110 然后取011 所以总的来说,00110011 是令人满意的,所以它是错误的

© www.soinside.com 2019 - 2024. All rights reserved.