Landscape トップページ | < 前の日 2003-03-24 2003-03-25 次の日 2003-03-26 >

Landscape - エンジニアのメモ 2003-03-25

Perl の正規表現のオプション m と s


* Perl の正規表現のオプション m と s

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

パターンマッチのオプションをちょっとおさらい。
試した環境は 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";
$str =~ /ing.*^pattern/ms
「ing という 文字列の後に、0個以上の文字列(改行も文字として扱う)が続き、
pattern という文字が続く。ただし、pattern は行の先頭でなければならないので、
pattern の直前は改行文字。」にマッチ。
こんなマッチをさせたい事って、あんまりないかな。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。