我刚开始学习形式语言和自动机理论,最近学习了正则表达式,所以我不知道任何复杂的符号,所以请坚持使用基本符号。
问题是:为以下语言编写一个正则表达式,{0, 1}
它是一组所有奇数长度的字符串,其中正好包含两个0
s。
我已经完成了第一部分(奇怪的部分),它应该是:
(0+1)[(0+1)(0+1)]*
(与(或)+
相同,|
我相信,我们将其学习为+
)
但是,当我想到正好有两个0
s 时,它真的搞砸了。我只能看到我只能使用*
with ,1
因为 # of 0
s 仅限于2
. 但如果我这样做(11)*
了,我就无法得到0
s 在1
s 中的排列。(例如不能得到10101
)(11)*
。
我知道的:
- 只有
1
s 可以使用*
- 在正则表达式中,只会
0
使用两个 s - 制作奇数长度的方法是将奇数长度添加到偶数长度(偶数长度需要在其中设置空字符串)
- 奇数长度不应该使用
*
,因为 2 奇数 = 偶数,所以只有偶数长度可以使用*
。
对于可能的提示或答案,请仅使用0
, 1
, +
/ |
, *
, (
, )
。其他一些表达我将无法理解。