正規表現

正規表現

正規表現とは、文字列のパターンマッチを表すための表現です。文字列の置換処理などによく利用されます。

以下で文字列の置換を例に挙げて、正規表現を簡単に解説します。

$value =~ s/abc/def/g;

これで $valueabc という文字列が含まれていれば、すべて def に置換します。

s/○/×/置換演算子 と呼ばれるもので、置換処理を行う際の記述です。=~ の左辺に変数を記述すると、その変数に含まれる × に置換されます。

置換演算子の後にある g は 修飾子 と呼ばれるもので、いわば置換処理のオプション設定です。よく使用される修飾しには、以下のものがあります。

修飾子 意味
e 置き換え文字列部を式とみなして実行する
g マッチするものすべてを見つける
i 大文字小文字の区別をしない

以下に、正規表現のサンプルプログラムを記載します。

#!/usr/local/bin/perl

$value1 = "This is a PerlScript.";
$value2 = "abcabcabc";
$value3 = "これはサンプルプログラムです。";

$value1 =~ s/PerlScript/perlscript/;
$value2 =~ s/ab/AB/g;
$value3 =~ s/サンプル//g;

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>$value1</p>\n";
print "<p>$value2</p>\n";
print "<p>$value3</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに This is a perlscript.ABcABcABcこれはプログラムです。 がそれぞれ表示されます。以下で、各置換処理の意味を解説していきます。

$value1 =~ s/PerlScript/perlscript/;

これは、「$value1PerlScript という文字列があれば、最初の1つだけ perlscript に置換する」という処理です。

$value2 =~ s/ab/AB/g;

これは、「$value2ab という文字列があれば、すべて AB に置換する」という処理です。修飾子 g をつけているので、条件に合うものすべてが置換対象になります。

$value3 =~ s/サンプル//g;

これは、「$value3サンプル という文字列があれば、すべて削除する」という処理です。置換後の文字列に何も指定されていないので、条件にあった文字列が削除されます。