寻找正则表达式

See*_*hor 4 regex theory

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

我被给予语言L,其中:

大号 = { 瓦特 ∈{0,1}*:瓦特恰好具有一对连续的零的}

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

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

任何帮助深表感谢.

Gum*_*mbo 6

试试这个:

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

一个解释:

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