まくまくPerlノート
行をまたいだ文字列マッチング
2008-03-11

m// 演算子による正規表現マッチング時に、オプション修飾子 (option modifier) の /s を指定すると、パターン内に登場するドット (.) が、改行文字を含むあらゆる文字にマッチするようになります。 ドットは通常は改行文字にはマッチしません。

$_ = "AAA BBB CCC\nDDD EEE FFF";
if (/BBB.*EEE/s) {
    ...
}

上記のようにドットのマッチ範囲を拡大する代わりに、文字クラスとして [\d\D] を使ってもあらゆる文字にマッチさせることができます。

$_ = "AAA BBB CCC\nDDD EEE FFF";
if (/BBB[\d\D]+EEE/) {
 ...
}
2008-03-11