本記事では、「or」を正規表現で表記するための2つの方法を解説します。
正規表現とは
正規表現は、データの中からあるパターンにマッチした文字列を検索したり置換したりするために、その探したいパターンを一つの文字列で表現するための表記方法です。
例えば日本の郵便番号は、「数字の3桁と数字4桁の間に-(ハイフン)のある文字列」と表現出来ます。半角数字を表す正規表現は「[0-9]」または「\d」で、3桁と4桁をあらわす正規表現は{3}と{4}です。これらのルールを使って日本の郵便番号を表すと、「[0-9]{3}-[0-9]{4}」や「\d{3}-\d{4}」となります。これらの文字列でデータを正規表現を使って検索する事で、100-0010であっても001-0011であっても、検索条件にマッチさせることが出来ます。
正規表現での「or」の書き方
正規表現で「or」を表すには、「[](角括弧)」または「|(パイプ)」を使います。角括弧はリテラル1文字単位でor条件を表すことが出来ますが、2文字以上のパターンになる場合はパイプを使います。
書き方
角括弧の場合の書き方は、「[](角括弧)」の中にor条件となる文字を1文字ずつ列挙することによって、角括弧の中のいずれかの一文字であることを表現します。パイプの場合の書き方は、「|(パイプ)」でor条件となる文字列のパターンを区切って表現します。
例
例えば「090-1234-5678」という携帯の電話番号を検索したい場合、上3桁は「090」か「080」か「070」となり、後の文字列は-(ハイフン)の後に4桁の数字、-(ハイフン)の後に4桁の数字です。上3桁より右の部分は「-\d{4}-\d{4}」と書くことが出来ますが、上3桁を角括弧とパイプで表すには、下記の例のように記述できます。
角括弧の場合
「0[789]0」のようになります。
例の携帯電話は「0[789]0-\d{4}-\d{4}」のように表現することが出来ます。
パイプの場合
「0(7|8|9)0」もしくは「070|080|090」のようになります。
例の携帯電話は「0(7|8|9)0-\d{4}-\d{4}」もしくは「(070|080|090)-\d{4}-\d{4}」のように表現することが出来ます。
パイプの場合は、パターンの文字数が異なる場合の指定が簡単に出来ます。
例えば「鳥天丼」または「鳥からあげ丼」のパターンを表現するには「鳥(天|からあげ)丼」と表現することが出来ます。
まとめ
正規表現で「or」を示すために、角括弧とパイプの二つの方法を解説しました。各括弧は1文字単位でのorを表すことができ、任意の文字数であればパイプを使って表すことができます。orで文字列のパターンを表したい時に、是非使ってみてください。