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