偶数个1的位串的正则表达式

Pra*_*rav 12 regex compiler-construction grammar

L= { w in (0+1)* | w has even number of 1s}L,即L是偶数为1的所有位串的集合.下面哪个正则表达式代表L?

A)(0*10*1)*
B)0*(10*10*)*
C)0*(10*1)*0*
D)0*1(10*1)*10*

根据我的选择D永远不会正确,因为它不代表零1的位串.但其他选择呢?我们担心1的数量(偶数与否)不是零的数量无关紧要.

那么这是正确的选择,为什么?

DVK*_*DVK 9

如果错误的话.它不匹配0110(或任何仅为零的非空字符串)

B代表OK.由于页边距太小,我不打算在这里证明它.

C不匹配010101010(中间零不匹配)

如你所说,D不会被00或任何其他#匹配而没有匹配.

所以只有B.