たまに使う Perl ですが、正規表現の書き方をすぐ忘れてしまうので、ここにアンチョコを作成します。
特殊変数
表現 |
説明 |
. |
改行を除くすべての文字 |
\d |
数字 |
\D |
数字以外の文字 |
\w |
ワード文字(「a~z」「A~Z」「0~9」 アンダーバー「_」) |
\W |
ワード文字以外の文字 |
\s |
空白文字( スペース「 」、タブ文字「\t」、改行文字「\n, \r」など) |
\S |
空白文字以外の文字 |
^ |
文字列の先頭 |
$ |
文字列の末尾 |
\b |
バックスペース |
\t |
タブ |
\e |
エスケープ |
置換
構文 |
説明 |
s/パターン/置換文字列/ |
「パターン」にマッチする文字列を「置換文字列」に置き換えます |
サンプル
$word = "This is a pen.";
$word =~ s/pen/book/;
print "$word\n";
修飾子
修飾子 |
説明 |
g |
繰り返しマッチ |
i |
大文字と小文字の区別をしない |
m |
文字列を複数行として扱う |
o |
変数展開を1度だけ行う |
s |
文字列を単一行として扱う |
g 修飾子
$word = 'abc abc';
$word =~ s/a/A/g;
print "$word\n";
e 修飾子
$word = "this is 100 yen.";
$word =~ s/(\d+)/$1 * 2/e;
print "$word\n";
変換
構文 |
説明 |
tr/変換対象の文字/変換後の文字/ |
「変換対象の文字」をスキャンして「変換後の文字」にすべて変換 |
修飾子 |
内容 |
c |
対象の文字に含まれないものを変換 |
d |
変換する文字に含まれないものを削除 |
サンプル
大文字変換
$word = 'sample';
$word =~ tr/a-z/A-Z/;
print "$word\n";
c 修飾子
大文字以外を _ に変換します。
$word = 'Foo Bar Hoge.';
$word =~ tr/A-Z/_/c;
print "$word\n";
d 修飾子
小文字を削除します。
$word = 'Foo Bar Hoge.';
$word =~ tr/a-z//d;
print "$word\n";
パターンマッチ
構文 |
説明 |
if ( 文字列 =~ /パターン/) |
パターンマッチすれば真 |
if ( 文字列 !~ /パターン/) |
パターンマッチすれば偽 |
if (/パターン/) |
変数 $_ の中でパターンマッチすれば真 |
if (!/パターン/) |
変数 $_ の中でパターンマッチすれば偽 |
サンプル
$word = 'sample';
if ($word =~ /sam/) {
print "マッチしました。\n";
} else {
print "マッチしませんでした。\n";
}
メタ文字の正規表現
メタ文字と呼ばれる特殊な意味を持つ文字には、そのままではマッチできないため、必ず直前に \ を付加してエスケープする必要があります。
サンプル
$price = 'This watch costs $100.';
if ($price =~ /\$/) {
print "含まれています。\n";
} else {
print "含まれていません。\n";
}