まず、これが宿題であることは明らかであり、十分な注意を払ったと思います。今、銀の大皿で解決策が私に渡されるとは思っていません。正しい方向に簡単に微調整するだけでいいので、始めましょう。
質問は:
アルファベット {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など
私がこだわっているのは、上記のケースでどのように機能させるかを考え出すことです。ポジティブルックアヘッドを試みましたが、うまくいきませんでした。
誰にも指針がありますか?