为包含Σ= {0,1}的字符串集的语言创建正则表达式 即输入是一个只包含1或0的字符串。我们必须搜索二进制字符串。
这样语言中的每个字符串都是:
(a)具有5个连续0的序列,或
(b)具有奇数个连续1的序列,在某一点上跟随偶数个连续1的序列。
因此00000,000000,11100000,11111和10011将使用该语言, 但110000不会。
答案 0 :(得分:0)
^[01]*0{5,}[01]*|[01]*11$
对于(a)它应该匹配,但是(b)我不是很清楚,是否意味着以11
结束?
答案 1 :(得分:0)
你必须连接2个正则表达式:
0{5}
:匹配5连续0
和
^1(?:11)*0*(?:11)*0*$
将它们分组:
0{5}|^1(?:11)*0*(?:11)*0*$
<强>解释强>
^ : start of string
1 : a 1
(?: : start non capture group
11 : that contains two 1
)* : repeated 0 or more times, after that you have an odd number of 1
0* : 0 or more 0
(?: : start non capture group
11 : that contains two 1
)* : repeated 0 or more times, you then have an even number of 1
0* : 0 or more 0
$ : end of string