選択の候補に他のメタ文字使ったパターンを作成する

複数の文字列のどれかにマッチするパターンを作成するときに、文字列ではなく他のメタ文字を使ったパターンを候補として記述することもできます。ここでは Ruby の正規表現で選択の候補に他のメタ文字使ったパターンを作成する方法について解説します。

(Last modified: )

選択の候補に他のメタ文字使ったパターンを作成する

選択の候補に他のメタ文字を使用する具体的な例で考えてみます。

/(add_.+\(|delete_.+\()/

選択の候補として add_.+\(delete_.+\( が指定されていますので、いずれかに一致する場合に正規表現はマッチします。(候補の文字列の中に「(」が含まれていますが、この文字はエスケープが必要なので「\(」と記述しています)。

add_.+\( の中の .+ は任意の 1 文字である . が 1 回以上繰り返されるということなりますので、「add_」で始まり「(」で終わる文字列全てにマッチします。同じように delete_.+\( は「delete_」で始まり「(」で終わる文字列全てにマッチします。

マッチするもの:

add_display(var, var2)
delete_prev_code(str)

このように候補自身も単なる文字列だけではなく他のメタ文字などを組み合わせて記述することが可能です。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

def check(str)
  if /(add_.+\(|delete_.+\()/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("(add_.+\(|delete_.+\() にマッチするかどうか")

check("add_display(var, var2)")
check("delete_prev_code(str)")
check("addBorder(pixcel)")
check("delete_margin")

下記のように実行して下さい。

候補に他のメタ文字を使用

今回のように .+ を使って任意の文字を 1 回以上繰り返す場合には、文字列のどの部分にマッチするかは注意が必要です。詳しくは「欲張りなマッチと控え目なマッチ(量指定子?)」を参照して下さい。

-- --

Ruby の正規表現で選択の候補に他のメタ文字使ったパターンを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。