選択肢の中で他のメタ文字を使ったパターンを作成する

選択肢を表すメタ文字「|」を使用することで複数の文字列の選択肢のいずれかにマッチさせることができますが、記述する選択肢は単なる文字列だけでなく他のメタ文字を使用したものを記述することもできます。ここでは Perl の正規表現でメタ文字の「|」を使った選択肢の中に他のメタ文字を使用する方法を解説します。

(Last modified: )

選択肢に他のメタ文字を使用

メタ文字の | を使うことで複数の選択肢のいずれかとマッチするパターンを記述できますが、選択肢には文字列だけでなく .+ などのメタ文字を組み合わせて選択肢を記述することもできます。

次の例を見てください。

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

選択肢として "add_.+_" と "delete_.+_" を記述しています。

"add_.+_" の中の .+ は任意の一文字である . が 1 回以上繰り返されるということなりますので "add_" で始まり、任意の文字が 1 文字以上続き、 "_" で終わる文字列全てにマッチします。

同じように "delete_.+_" は "delete_"で始まり、任意の文字が 1 文字以上続き、 "_" で終わる文字列全てにマッチします。

これを | を使って選択肢として記述しているので、どちらかに一致する文字列とマッチすることになります。

〇 add_display_
〇 delete_window_

このように一つ一つの選択肢についても、単なる文字列だけではなくメタ文字などを組み合わせて記述することが可能です。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

&check("add_panel_");
&check("add_window_");
&check("delete_screen_margin_");
&check("add_control");
&check("delete__");

sub check{
  if ($_[0] =~ /(add_.+_|delete_.+_)/){
    print $_[0]." は /(add_.+_|delete_.+_)/ にマッチします。\n";
  }else{
    print $_[0]." は /(add_.+_|delete_.+_)/ にマッチしません。\n";
  }
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

選択肢の中で他のメタ文字を使ったパターンを作成する(1)

選択肢の中に別のメタ文字を使ったパターンを作成し、色々な文字列とマッチするかどうか確認したあと結果を画面に表示しました。

-- --

Perl の正規表現でメタ文字の「|」を使った選択肢の中に他のメタ文字を使用する方法を解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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