0の偶数または1の奇数を含む式を記述します
私はそれを手に入れました:
1*(01*01*)* + 0*10*(10*10*)*
最初の部分は0の偶数を表し、2番目の部分は1の奇数を表します
しかし、私が見ない単純化された解決策があるはずです。任意のヒント?
奇数1秒の部分:0*1(0|10*1)*
偶数次の部分は、次のように異なります。
(1|01*0)*
_(1|01*0)+
_1*(01*01*)+
(OPと同様)古い答え:ケース1と2で正しい
_(1*(01*0)*)+ | 0*1(0*(10*1)*)*
_
役立つコメントを@OGHazaに感謝します。
偶数長の文字列が常に制約を満たすという事実を利用する:
^(([01]{2})*|1*(01*01*)*)$
「最短」を定義します。最短の評価時間(つまり最速)を探している場合は、キャプチャグループを使用しないようにしてください。
^(?:1*(?:01*0)*)+|0*1(?:0*(?:10*1)*)*$
キャプチャグループを使用するこの式よりも20%速く表示されますが、同じ答えが得られます
^(1*(01*0)*)+|0*1(0*(10*1)*)*$
最も少ないシンボルで、
1*(01*01*)*
私が見つけた最も簡単な解決策は次のとおりです:
1+0(0+1)((1+0)(1+0))*