首先,很明显这是功课,我相信我已经尽职尽责。现在我不希望在银盘上将解决方案交给我,只需朝正确的方向轻推就可以了,所以让我开始吧:
问题是:
字母表 {0, 1} 上的所有字符串,其中每个奇数长度的 0 块后面紧跟一个偶数长度的 1 块,每个偶数长度的 0 块后面紧跟一个奇数长度的 1 块。
我一直在做的是一块一块地工作,首先是:
仅匹配偶数 0,奇数 1: ^[^0]*((00)+1(11)*)*$
仅匹配奇数 0,偶数 1: ^[^0]*(0(00)*(11)+)*$
把它们放在一起: ^[^0]*((00)+1(11)*)*(0(00)*(11)+)*$
我认为这最初是有效的,但它只适用于:
- 001011
- 001000010110001111等
- 基本上任何其他出现的顺序与它在有意义的表达式中出现的顺序相同。
并不是:
- 011001等
我一直坚持的是弄清楚如何让它适用于上面列出的案例。我试着做一个积极的前瞻,但它似乎没有奏效。
有没有人有任何指示?