ここでは Perl における RE(Regular Expressions) について説明する。
perl の正規表現における特殊文字は以下の通りである。
'.'
- 任意の一文字。改行にはマッチしない。'['
- 文字集合の開始。"[^^]" は '^'
以外のすべて。"[a-z]" は小文字のアルファベット。'-'
, '['
, ']'
, '^'
そのものを集合としたい場合は "[]^\\[-]" という順序にする。'\'
- エスケープ。特殊文字のエスケープに用いる。'*'
- 0個以上の繰り返しにマッチ'^'
- 行頭'$'
- 行末'('
- グループの開始。')'
- グループの終了。'|'
- グループの論理和。'+'
- 1個以上の繰り返しにマッチ'?'
- 0個か1個の繰り返しにマッチ'{'
- 繰り返し回数。"{m}", "{m,n}", "{m,}", "{,n}" はそれぞれ m 回, m〜n 回, m 回以上, n 回以下を表す。perl の正規表現における最左最小(非貪欲)マッチは以下の通りである。
'*?'
- 0個以上の繰り返しに最左最小(非貪欲)マッチ'+?'
- 1個以上の繰り返しに最左最小(非貪欲)マッチ'??'
- 0個か1個の繰り返しに最左最小(非貪欲)マッチ'{m}?'
- m 回の繰り返しに最左最小(非貪欲)マッチ'{m,}?'
- m 回以上の繰り返しに最左最小(非貪欲)マッチ'{m,n}?'
- m〜n 回の繰り返しに最左最小(非貪欲)マッチperl の正規表現における絶対最大マッチは以下の通りである。
'*+'
- 0個以上の繰り返しに絶対最大マッチ'++'
- 1個以上の繰り返しに絶対最大マッチ'?+'
- 0個か1個の繰り返しに絶対最大マッチ'{m}+'
- m 回の繰り返しに絶対最大マッチ'{m,}+'
- m 回以上の繰り返しに絶対最大マッチ'{m,n}+'
- m〜n 回の繰り返しに絶対最大マッチperl の文字集合には以下の文字クラス名が用意されている。
文字クラス | ISO646で等価な文字集合 | 備考 |
"[:alnum:]" | "[0-9A-Za-z]" | |
"[:alpha:]" | "[A-Za-z]" | |
"[:ascii:]" | "[A-Za-z]" | POSIX にはない。 |
"[:blank:]" | "[\t ]" | '\h' と等価。 |
"[:cntrl:]" | "[^[:print:]]" | |
"[:digit:]" | "[0-9]" | '\d' と等価。 |
"[:graph:]" | "[^ [:cntrl:]]" | |
"[:lower:]" | "[a-z]" | |
"[:print:]" | "[ !-\/0-9:-\@A-Z[-`a-z{-~]" | |
"[:punct:]" | "[!-\/:-\@[-`{-~]" | |
"[:space:]" | "[\t-\r ]" | '\s' と '^K' と等価。 |
"[:upper:]" | "[A-Z]" | |
"[:word:]" | "[0-9A-Za-z_]" | '\w' と等価。POSIX にはない。 |
"[:xdigit:]" | "[0-9A-Fa-f]" |
ここで "[:^digit:]", "[:^space:]" のような POSIX にはない補集合もサポートされる。
他に Perl が他の処理系に多大な影響を与えた特殊文字を以下にあげる。
(?modifiers)
- マッチ修飾子(?[modifiers:]pattern)
- [マッチ修飾子付き]後方参照なしグループ(?|pattern)
- 「枝リセット」パターンによるグループ番号の振り直し(?=pattern)
- ゼロ幅の先読み言明(?!pattern)
- ゼロ幅の否定の先読み言明(?<=pattern)
- ゼロ幅の後読み言明、\K
も参照(?<!pattern)
- ゼロ幅の否定の後読み言明(?'NAME'
pattern)
- 名前付きグループ(?<NAME>pattern)
- 同上(?P<NAME>pattern)
- 同上(?&NAME)
- 名前付きパターンへの再帰(?P>NAME)
- 同上(?(cond)Ypattern[|Npattern])
- 条件付きパターン(?>pattern)
- 絶対最大マッチ\1
- 後方参照。1
には正の整数。[]
内では不可。\g1
- 後方参照。[]
内では不可。\g{1}
- 後方参照。[]
内では不可。\g{-1}
- 相対後方参照。[]
内では不可。\g{name}
- 名前後方参照。[]
内では不可。\k'name'
- 名前後方参照。[]
内では不可。\k<name>
- 同上\k{name}
- 同上特に「後方参照なしグループ」はグループ番号を無駄に消費しないので極めて有用である。詳しくは Perl のドキュメントを参照のこと。
p
- ${^PREMATCH}
, ${^MATCH}
, ${^POSTMATCH}
のようなマッチ文字列を保持i
- 大文字小文字の無視m
- マルチラインモード。'^'
, '$'
がそれぞれ行頭、行末にマッチする。s
- シングルラインモード。'.'
が改行にもマッチする。x
- 読み易さの為に改行含む空白やコメントの挿入を許可。g
, c
- 大域マッチ及びカレント位置の保持。これらは、正規表現内では指定不可。