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