気の向くままに辿るIT/ICT/IoT
Perl

Perl 修飾子

ホーム前へ次へ
Perlのパターンマッチで修飾子ってどうやって使うの?

Perl 修飾子

Perl 正規表現/パターンマッチ・パターンマッチング

正規表現 / Regular Expression

パターンマッチング / Pattern Match / Pattern Matching

演算子 / Operators

修飾子 / Modifiers

量指定子 / Quantifiers

メタ文字/メタキャラクタ / Metacharacters

エスケープシーケンス / Escape sequences

文字クラス / Character Classes

特殊なエスケープ文字 / Special Escapes

...etc.

Perl 修飾子

 Perlでは、マッチング演算子[m]、置換演算子[s]、変換演算子[y]等の演算子を使った式において修飾子と呼ばれるオプションを付加することが可能です。

 修飾子はパターンセパレータ末尾の後に / /m のように付加します。

修飾子用途
m [multi-line] 複数行にマッチ、この時 ^ と $ が示す位置も複数行に渡る
s 単一行にマッチ、この時、ドット . は通常マッチしない改行等にもマッチ
 修飾子 m とセットで ms と指定した場合、複数行に渡り、^ と $ が示す位置も複数行に対応、改行も含めてマッチ
i [ignore] 大文字/小文字の区別なく何れにもマッチ
x パターン内に空白やコメントを含め複数行に渡って書くことができ可読性を高める拡張
p ${^PREMATCH}、${^MATCH}、${^POSTMATCH}をそれぞれマッチするパターンの前、マッチするパターン、マッチするパターンの後の文字列として参照することが可能
 既存の$'、$&、$`の処理速度への影響といったデメリットを解消したもので、これらに代わるパターンとして利用することが推奨される
g [global] グローバルマッチ
 該当するパターン全てにマッチ
 g 修飾子と c 修飾子を併用することでマッチに失敗した際に現在位置を保持
 通常パターンマッチに失敗した場合、その位置は前回成功した位置、それがない場合や対象文字列が変更になった場合、その位置はリセットされる
 つまり、c 修飾子単独または c 修飾子と g 修飾子との組み合わせは正規表現そのものではなく、その使用方法に影響を与える
 これは異なる文字列の位置は当然それぞれ異なるが、その位置を単独でセットしたり、読み取ったりすることも可能であることを意味する
c パターンマッチに失敗してもその位置をリセットしない
a(説明割愛) Perl 5.14で新たに追加
 UnicodeやASCIIなどの文字セットに影響する修飾子で文字セット修飾子と呼ばれる
 但し、s演算子などによる置換には影響しない
d
l
u
パターンはセパレータで挟み、修飾子は末尾に付ける
/pattern/m
$scalar=~s/[a-z].*//i; 

 更に置換演算子[s]演算子には下記修飾子も利用することが可能です。

修飾子意味
e [eval] 結果を式として評価する
o [Optimization] パターンの展開を1度だけ行う
(処理を速くする為の最適化)

ホーム前へ次へ