- Home ›
- Perlにおける正規表現 ›
- 複数の選択肢から選択 ›
- HERE
選択肢に他のメタ文字を使用
ここまでは固定の文字列を選択肢として記述してきましたが、文字列だけではなく「.」や「+」などのメタ文字を組み合わせて選択肢を記述することも出来ます。
具体的な例で考えてみます。
/(add_.+_|delete_.+_)/
上記の場合は「add_.+_」と「delete_.+_」のいずれかに一致する場合にマッチします。
「add_.+_」の中の「.+」は任意の一文字である「.」が1回以上繰り返されるということなりますので、「add_」で始まり「_」で終わる文字列全てにマッチします。同じように「delete_.+_」は「delete_」で始まり「_」で終わる文字列全てにマッチします。
マッチするもの:
add_display_ delete_prev_code_
このように一つ一つの選択肢についても、単なる文字列だけではなくメタ文字などを組み合わせて記述することが可能です。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; print "「(add_.+_|delete_.+_)」にマッチするかどうか¥n¥n"; &check("add_panel_"); &check("delete_screen_margin_"); &check("add_control"); &check("delete__"); sub check{ my ($str) = @_; if ($str =~ /(add_.+_|delete_.+_)/){ print "○:$str¥n"; }else{ print "×:$str¥n"; } }
上記を「test2-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
( Written by Tatsuo Ikura )