ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Perl】正規表現のアンチョコ作成

たまに使う 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";
}