パターンマッチのオプションをちょっとおさらい。
試した環境は TurboLinux 6.5 Server の perl version 5.005_03 built for i386-linux
perldoc perlre も参考になる。
かつ正規表現中に ^ や $ を使って先頭や末尾を指定しているとき。
それ以外の時は意味がないと思われる。
以下の例では、m を付けるとマッチ、付けないとアンマッチ。
普段は . は改行文字にはマッチしないが、s オプションによりマッチするようになる。
改行文字とは \n の事のようだ。\r は オプションの有無にかかわらずマッチした。
以下の例では、s を付けるとマッチ、付けないとアンマッチ。
s オプションにより、. は\n にマッチする。
以下のようなときは、m と s 両方のオプションを指定したときだけマッチする。
pattern という文字が続く。ただし、pattern は行の先頭でなければならないので、
pattern の直前は改行文字。」にマッチ。
こんなマッチをさせたい事って、あんまりないかな。
試した環境は TurboLinux 6.5 Server の perl version 5.005_03 built for i386-linux
perldoc perlre も参考になる。
- m オプション: $str を複数行として扱う。
m オプションを必要とするのは、文字列中に改行文字を含み、かつ正規表現中に ^ や $ を使って先頭や末尾を指定しているとき。
それ以外の時は意味がないと思われる。
以下の例では、m を付けるとマッチ、付けないとアンマッチ。
$str =~ "string\npattern\nptt\nend";
$str =~ /^pattern/m;
- s オプション: 文字列を単数行として扱う。・・・と書くとわかりにくいかな。
. を改行文字にもマッチさせるようになる。普段は . は改行文字にはマッチしないが、s オプションによりマッチするようになる。
改行文字とは \n の事のようだ。\r は オプションの有無にかかわらずマッチした。
以下の例では、s を付けるとマッチ、付けないとアンマッチ。
$str =~ "string\npattern\nptt\nend";
$str =~ /ring.*pattern/s;
- m オプションと s オプションを両方指定すると・・・?
m オプションにより、^ や $ の指定が有効になる。s オプションにより、. は\n にマッチする。
以下のようなときは、m と s 両方のオプションを指定したときだけマッチする。
$str =~ "string\npattern\nptt\nend";「ing という 文字列の後に、0個以上の文字列(改行も文字として扱う)が続き、
$str =~ /ing.*^pattern/ms
pattern という文字が続く。ただし、pattern は行の先頭でなければならないので、
pattern の直前は改行文字。」にマッチ。
こんなマッチをさせたい事って、あんまりないかな。
以上の内容はhttp://sonic64.com/2003-03-25.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
モバイルやる夫Viewer Ver0.14