- Home ›
- Ruby入門 ›
- Ruby正規表現の使い方
複数の文字列のどれかにマッチする(|)
いくつかの候補となる文字列を列挙し、そのいずれか一致する場合にマッチするパターンを記述することができます。ここでは Ruby の正規表現で複数の文字列のどれかにマッチする「|」の使い方について解説します。
(Last modified: )
複数の文字列のどれかにマッチする
いくつかの候補となる文字列を列挙し、そのいずれか一致する場合にマッチするパターンを記述するには |
を使用します。書式は次の通りです。
/候補1|候補2|../
候補となる文字列をハイフン(|)で区切って続けて記述します。具体的な例として「Friday」「Saturday」「Sunday」のいずれかにマッチする正規表現は次のように記述します。
/Friday|Saturday|Sunday/
この場合、対象の文字列に「Friday」「Saturday」「Sunday」のいずれかの文字列が含まれていた場合にマッチすることになります。
マッチするもの:
Today is Friday Sunday Night
マッチしないもの:
Sun Tuesday
候補の文字列をグループ化する
選択を使用する場合に、他の文字などと組み合わせて使う場合は注意が必要です。次の例を見てください。
/border is red|RED|Red color/
これは「border is red color」「border is RED color」「border is Red color」のいずれかに一致する場合にマッチする正規表現オブジェクトのつもりでしたが、実際にマッチするのは「border is red」「RED」「Red color」のいずれかに一致する場合にマッチします。
これは候補の区切りがスペースなどではない為です。選択と他の文字やメタ文字などと組み合わせて使用する場合は選択全体を ()
で囲みグループ化して使用して下さい。
/(候補1|候補2|..)/
この場合は、「(」から「)」までの間に記述された中で、「|」で区切られた1つ1つの文字列が候補となります。先ほどの例は次のように記述することで意図したとおりの正規表現オブジェクトとなります。
/border is (red|RED|Red) color/
これで「border is red color」「border is RED color」「border is Red color」のいずれかに一致する場合にマッチする正規表現オブジェクトとなりました。
では簡単なプログラムで確認してみます。
# encoding: UTF-8 def check(str) if /(red|blue|green)/ =~ str then puts("○" + str) else puts("×" + str) end end puts("(red|blue|green) にマッチするかどうか") check("color is red") check("green green") check("yellow page")
下記のように実行して下さい。
-- --
Ruby の正規表現で複数の文字列のどれかにマッチする「|」の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。