0

「奇数または 8 で割り切れる 2 進数を表す 0 と 1 のすべての文字列を記述する正規表現を記述します。数値には先行ゼロが含まれていない場合があります。」

(000|1)$間違っているとマークされたものとして答えました。理由がわかりません。説明してください!前もって感謝します。

4

1 に答える 1

3

要件のうち 2 つを忘れていました。

  1. 1s と0sのみを含める必要があります。

    ^[01]*(000|1)$
    
  2. 0先頭にsがない場合があります。

    ^(?!0)[01]*(000|1)$
    

    先読みが許可されていない場合は、少しトリッキーになります。

    ^1[01]*(000|1)$|^1$
    

さらに、「理論上の」正規表現 (交互、グループ、反復) で使用できる正規表現構造のみを使用できる場合は、次のようになります (この場合、アンカーは暗黙的です)。

1(0|1)*(000|1)|1
于 2012-12-08T01:15:33.393 に答える