• ベストアンサー

111を含まないstringを表現する正規表現

0と1のみを使い、さらに111を持たないstring全てを定義する正規表現ではどのように表せばいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

ちょっとややこしいですが ^(110|10|0)*(11|1)?$ といったところでしょうか。 「111」が無いということは、1が現れるのは、基本的に「10」か「110」になります。それか0かの繰り返しで、 あとは、一番最後が1で終わる場合を考慮してます。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

なにかの課題のような気もしますが、以下のスクリプト(と正規表現)でたぶん期待通り動いているようです。 ARGF.each do |line| line.chomp! puts line if /^0*(?:1?1?0+)*1?1?$/.match(line) end