具有偶数个零和一的字符串的正则表达式

时间:2010-04-27 22:08:45

标签: regex

0和1的字符串的正则表达式是什么,偶数个零和偶数个?

我有类似(1*01*01*)*(0*10*10*)*的内容。

看起来不错吗?

4 个答案:

答案 0 :(得分:12)

嗯,这可能是功课,但是到底是什么:

^(00|11|(01|10)(00|11)*(01|10))*$

编辑:简化!

答案 1 :(得分:6)

1100是该语言,但与您的表达不符。 10101不在语言中, 但你的表达与之匹配。

我建议首先绘制DFA。有一个非常明显的4状态机器识别这种语言。 (是否可以做得更好?)空字符串是语言,因此开始状态是接受状态。还有其他接受状态吗?对于不接受状态S,是 有一个前缀,从开始 - > S?有没有办法从S回到S而没有达到接受状态?是否有后缀使您从S回到接受状态?

答案 2 :(得分:1)

您给定正则表达式的反例是01010101

您可能会发现为此特定问题编写正则表达式是不可能的(除非您使用一些非常规扩展名正则表达式语言)。

如下面的Jim Lewis所说,这确实应该是一个可以解决的问题。

答案 3 :(得分:-1)

@tmp = $str =~ /0/g;

print scalar @tmp % 2 == 0 ? 'even' : 'odd';