Ruby Tips!

RubyのTipsを紹介します

文字列が複数の正規表現にすべてマッチするか判定する

文字列が複数の正規表現にすべてマッチするか判定する決まった方法は存在しない。
簡単でわかりやすいのは、正規表現によるマッチを複数行い、andで繋げてしまう方法だ。

str = "abcdefghi"
p /abc/ =~ str and /def/ =~ str and /ghi/ =~ str #=> 0

Array#findを駆使すると、以下のように配列に格納した正規表現すべてにマッチするかを1行で判定することができる。ただ、これは少々トリッキーなためおすすめしない。

p ![/abc/, /def/, /ghi/].find{|regexp| !("abcdefghi" =~ regexp)} #=> true
p ![/abc/, /def/, /ghi/].find{|regexp| !("abcdefgh" =~ regexp)} #=> false