• ベストアンサー

『マッチしない』をなるべく短く

verは1.8.7です。 ifで文字列が指定した正規表現と『マッチしない』場合を判定したいんですがそのまま書くと unless @value =~ /^[0-9]{4}/ みたいになります。 unlessだと先に条件式を見てからひっくり返さないといけないので『マッチしない』を判別する演算子があればいいのですが、マニュアルのStringとRegexpのページを見ても分かりませんでした。 もしあったら教えてください。あとマニュアルにある場合はどこに書いてあるか教えてもらえると嬉しいです。

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

  • ベストアンサー
noname#158634
noname#158634
回答No.1

「!~」ですね。 否定の「!」と正規表現比較の「~」が組み合わさっています。 記号系は「Rubyで使われる記号の意味(正規表現の複雑な記号は除く)」にいろいろ載ってますよ。

参考URL:
http://doc.ruby-lang.org/ja/1.8.7/doc/symref.html
rinrin_ring
質問者

お礼

いつもありがとうございます! 記号には記号の専用ページがあったんですねえ~知りませんでした(汗) URLも教えてくれてありがとうございましたm(_ _)m

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

ANo1.氏の言うように !~ でいいんだけど、どちらかと言うとそのような否定演算子を使うよりは unless @value =~ /^[0-9]{4}/ の書き方の方が好まれていると思います。 こっちの方が「ほんとは数字4桁始まりであって欲しいけど、そうでないときは○○」という雰囲気しない?しないか。

rinrin_ring
質問者

お礼

回答ありがとうございます! なるほどお…『本当は数字4文字がいいんだけど』っていうときは確かにunlessのほうが分かりやすい気がしますね!目からうろこ♪

関連するQ&A