文字列が複数の正規表現にすべてマッチするか判定する
文字列が複数の正規表現にすべてマッチするか判定する決まった方法は存在しない。
簡単でわかりやすいのは、正規表現によるマッチを複数行い、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