「初めてのPerl」 第七章
第七章から。
ここから正規表現の世界に入る。
何かTip集っぽくなってきた。
第七章 正規表現の世界
用語集
正規表現 | Perlではパターンと呼ばれる。無限集合の文字列をマッチするかしないかに分ける。 |
---|---|
メタキャラクタ | 特殊文字。.とか*とか?とか。 |
キャプチャグループ | ()で囲ったもの。複数文字にまとめてメタキャラクタを適用出来たり、使い回せたり便利。 |
文字クラス | []で囲ったもの。ある種類の文字にマッチさせたい時とかに便利。 |
Point
- 正規表現(パターン)の基本的な使い方
#abcという文字列があるか判断するには $_ = "bcabca cabcbac"; if (/abc/) { print "OK!"; } #パターンを/..../で囲んで指定する
- 特殊な指定がしたい。
#ある1文字にマッチする $_ = "abbbbc"; if (/a....c/) { print "OK!"; } #直前の文字を繰り返す $_ = "abbbbc"; if (/ab*c/) { #*は直前の文字を0回以上繰り返す print "OK!"; } if (/ab+c/) { #+は直前の文字を1回以上繰り返す print "OK!"; } #直前の文字がある場合と無い場合でマッチする $_ = "abc"; if (/ab?c/) { #abcでもacでもマッチする print "OK!"; } #グルーピングして使い回す $_ = "abc axc"; if (/(a.c) \1/) { #/a.c a.c/と同義 print "OK!"; } $_ = "abba"; if (/(a)(b)\2\1/) { #/abba/と同義 print "OK!"; }
- 複数指定文字列のどれかにマッチさせたい。
$_ = "abc"; if (/aaa|bbb|ccc|abc/) { print "OK!"; } #最後のabcにマッチする
- 指定した文字のいずれかにマッチさせたい。
$_ = "abc"; if (/a[abcdefg]c/) { print "OK!"; } #[]で囲むとそのどれかにマッチしていれば良い #これを文字クラスと呼ぶが、Perlには文字クラスのショートカットが存在する $_ = " x0x "; if (/ x[\d]x /) { # x[数字]x にマッチする print "OK!"; } if (/[\s]x0x[\s]/) { #[空白文字]x0x[空白文字]にマッチする print "OK!"; } #ちなみに大文字にすると否定になる if (/ [\D]0[\D] /) { # [非数字]0[非数字] にマッチする print "OK!"; } #後はワード文字を表す[\w]があるが、説明すると長いので割愛する #めんど(ry
次回は
次回は第八章を予定。