「初めてのPerl」 第八章 - 1
第八章から。
第八章 正規表現によるマッチ
内容
用語集
用語 | 説明 |
---|---|
パターンマッチ演算子 | 前回の/xxx/はm/xxx/というパターンマッチ演算子のショートカット |
マッチ修飾子 | 正規表現の動作を変化させる |
アンカー | パターンを文字列の特定の位置に固定する |
結合演算子 | =~で表現され、左側の文字列に右側のパターンをマッチさせる |
Point
//はm//のショートカットだった
# 前回の//は $_ = "abc"; if (/abc/) { print "OK!"; } # 実はm//のショートカット if (m/abc/) { print "OK!"; } # ちなみに/(スラッシュ)はデリミタなので if (m{abc}) { print "OK!"; } if (m[abc]) { print "OK!"; } # こう書けたりする
大文字小文字を区別せずにマッチさせる
# iというマッチ修飾子を付けると大文字小文字を区別しなくなる $_ = "AbC"; if (/abc/i) { print "OK!"; } if (/ABC/i) { print "OK!"; }
パターン内に空白文字を入れたい
# コメント等は空白文字として扱われるので # 途中でコメントを入れたい場合等は末尾にxを付ける $_ = "abc"; if ( / a # aだよ! b # bでゴンス! c # cだっピ! /x ) { print "OK!"; } # カオス
マッチ修飾子はまとめて指定出来る
# 単純に羅列すればOK $_ = "AbC"; if ( / A # この B # ロリコン C # どもめ! /ix ) { print "OK!"; }
文字列の先頭・末尾にマッチさせたい
$_ = "abc"; # 先頭にマッチさせたいなら\Aアンカーを使う if (/\Aa/) { print "OK!"; } # 末尾にマッチさせたいなら\zアンカーを使う if (/c\z/) { print "OK!"; }
単語単位でマッチさせたい
# \bアンカーを使えば単語単位でマッチ出来る $_ = "abc ab a"; if (/\ba\b/) { print "OK!"; } # この場合最後のaにだけマッチする
$_を使いたくない!
# 左側の文字列に右側のパターンをマッチさせる my $hoge = "abc"; if ($hoge =~ /abc/) { print "OK!"; } # おそらく頻度の高い使い方
パターンの中で変数展開したい
# ダブルクォート文字列を同じように変数展開される $_ = "abc"; my $hoge = "b"; if (/a($hoge)c/) { print "OK!"; }
次回は
次回は第八章の続きを予定。