前のページ|次のページ

Perl正規表現(PRX)のメタ文字テーブル

一般的な構成

一般的な構成
メタ文字
説明
( )
グループ化を示します。
非メタ文字
その文字と一致します。
{ } [ ] ( ) ^ $ . | * + ? \| * + ?\
これらの文字と一致させるには、\でオーバライド(エスケープ)します。
\
次に続くメタ文字をオーバーライドします。
\n
キャプチャバッファnと一致します。
(?:...)
非キャプチャグループを指定します。

基本Perlメタ文字

次の表に、Perl正規表現でパターンと照合するために使用できるメタ文字を示します。
基本Perlメタ文字とその説明
メタ文字
説明
\a
アラーム(ベル)文字と一致します。
\A
文字列の最初の文字のみと一致します。
\b
単語の境界(単語と空白の間の位置)と一致します。
  • "er\b"は"never"の"er"と一致します。
  • "er\b"は"verb"の"er"とは一致しません。
\B
単語の境界以外と一致します。
  • "er\B"は"verb"の"er"と一致します。
  • "er\B"は"never"の"er"とは一致しません。
\cA-\cZ
制御文字と一致します。たとえば、\cXは制御文字control-Xと一致します。
\C
1バイトと一致します。
\d
数字と一致します。[0−9]と同じ意味です。
\D
数字以外と一致します。[^0−9]と同じ意味です。
\e
エスケープ文字と一致します。
\E
大文字と小文字の変更の終了を指定します。
\f
フォームフィード文字と一致します。
\l
次に続く文字を小文字に指定します。
\L
次に続く\Eメタ文字までの文字列を小文字に指定します。
\n
改行文字と一致します。
\num
$num
キャプチャバッファnumと一致します。numは正の整数です。Perlの変数構文($num)は、キャプチャバッファを参照する場合は有効ですが、それ以外では無効です。
\Q
すべての非単語構成文字をエスケープ(前にバックスラッシュを挿入)します。
\r
復帰文字と一致します。
\s
空白、タブ、フォームフィードなどのあらゆる空白文字と一致します。[\f\n\r\t\v]と同じ意味です。
\S
空白文字以外のあらゆる文字と一致します。[^\f\n\r\t\v]と同じ意味です。
\t
タブ文字と一致します。
\u
次に続く文字を大文字に指定します。
\U
次に続く\Eメタ文字までの文字列を大文字に指定します。
\v
垂直方向の空白文字です。
\w
単語構成文字、英数字またはアンダースコアと一致します。
\W
単語構成文字以外、英数字以外およびアンダースコア以外と一致します。
\ddd
8進文字dddと一致します。
\xdd
16進文字ddと一致します。
\z
文字列の末尾の文字のみと一致します。
\Z
文字列の末尾の文字のみと一致します。文字列の末尾が改行の場合はその直前の文字と一致します。

メタ文字と置換文字列

置換正規表現を使用した場合、正規表現と置換テキストの両方で次のメタ文字を使用できます。
  • \l
  • \u
  • \L
  • \E
  • \U
  • \Q
これらのメタ文字は、置換テキスト内で使用されるキャプチャバッファを制御する場合に役立ちます。これらのメタ文字の使用例については、 テキストの置換
これらのメタ文字の説明については、基本Perlメタ文字とその説明を参照してください。

その他の量指定子

次の表に、Perl正規表現で使用できるその他の量指定子を示します。表内のメタ文字の説明には、そのメタ文字の使用例が含まれています。
その他の量指定子
メタ文字
説明
\
次に続く文字を特殊文字、リテラル、前方参照、8進エスケープのいずれかにマークします。
  • "\n"は改行文字と一致します。
  • "\\"は"\"と一致します。
  • "\("は"("と一致します。
|
英数字の文字列を比較する場合のor条件を指定します。たとえば、構成x|yはxまたはyのいずれかと一致します。
  • "z|food"は"z"または"food"のいずれかと一致します。
  • "(z|f)ood"は"zood"または"food"のいずれかと一致します。
^
入力文字列の先頭の位置と一致します。
$
入力文字列の末尾の位置と一致します。
ピリオド(.)
改行文字以外のあらゆる1文字と一致します。改行文字も含むあらゆる文字と一致させるには、"[.\n]"などのパターンを使用します。
(pattern)
グループ化を指定します。patternと一致した文字列のキャプチャバッファを作成します。キャプチャされた一致の位置と長さを取得するには、CALL PRXPOSNを使用します。キャプチャバッファの値を取得するには、PRXPOSN関数を使用します。かっこと一致させるには、"\("または"\)"を使用します。

最長一致と最短一致の繰り返し要素

Perl正規表現は、"最長一致"の繰り返し要素と"最短一致"の繰り返し要素をサポートしています。繰り返し要素は、その繰り返し要素が特定の開始位置から文字列と一致する回数が可能な限り多い場合に最長一致と見なされます。また、繰り返し要素が文字列と一致する必要のある回数が最小の場合は最短一致と見なされます。繰り返し要素を最短一致に指定するには、?を 繰り返し要素の末尾に追加します。デフォルトでは、繰り返し要素は最長一致と見なされます。
次の表に、最長一致の繰り返し要素を示します。表内の繰り返し要素の説明には、その要素の使用例が含まれています。
最長一致の繰り返し要素
メタ文字
説明
*
直前の副次式と0回以上一致します。
  • zo*は"z"および"zoo"と一致します。
  • *は{0,}と同じ意味です。
+
直前の副次式と1回以上一致します。
  • "zo+"は"zo"および"zoo"と一致します。
  • "zo+"は"z"とは一致しません。
  • +は{1,}と同じ意味です。
?
直前の副次式と0回または1回一致します。
  • "do(es)?"は"do"または"does"の"do"と一致します。
  • ?は{0,1}と同じ意味です。
{n}
n回以上一致します。
{n,}
n回以上パターンと一致します。
{n,m}
mおよびnは負でない整数です。n<=mです。少なくともn回、最大でm回一致します。
  • "o{1,3}"は"fooooood"の最初の3つのoと一致します。
  • "o{0,1}"は"o?"と同じ意味です。
カンマと数の間には空白を入れません。
次の表に、最短一致の繰り返しメタ文字を示します。
最短一致の繰り返し要素
メタ文字
説明
*?
0回以上パターンと一致します。
+?
1回以上パターンと一致します。
??
0回または1回パターンと一致します。
{n}?
n回完全に一致します。
{n,}?
n回以上パターンと一致します。
{n,m}?
少なくともn回、最大でm回パターンと一致します。

クラスのグループ化

次の表に、文字クラスのグループ化を示します。文字をかっこで囲んでこれらのクラスを指定します。これらのメタ文字は、共通のプロパティセットを共有します。処理が正常に行われるには、文字クラスが常に文字と一致する必要があります。否定文字クラスは、かっこ内で指定された文字のリストに含まれない文字と常に一致する必要があります。表内のメタ文字の説明には、そのメタ文字の使用例が含まれています。
文字クラスのグループ化
メタ文字
説明
[...]
かっこで囲まれた文字のいずれかと一致する文字セットを指定します。
  • "[abc]"は"plain"の"a"と一致します。
[^...]
かっこで囲まれていない文字と一致する負の文字セットを指定します。
  • "[^abc]"は"plain"の"p"と一致します。
[a-z]
文字の範囲を指定します。その範囲内の文字と一致します。
  • "[a-z]"は"a"から"z"の範囲の小文字の英字と一致します。
[^a-z]
文字の範囲を指定します。その範囲外の文字と一致します。
  • "[^a-z]"は"a"から"z"の範囲外の文字と一致します。
[[:alpha:]]
[[:^alpha:]]
英字と一致します。
英字以外の文字と一致します。
[[:alnum:]]
[[:^alnum:]]
英数字と一致します。
英数字以外の文字と一致します。
[[:ascii:]]
[[:^ascii:]]
ASCII文字と一致します。[\0–\177]と同じ意味です。
非ASCII文字と一致します。[^\0–\177]と同じ意味です。
[[:blank:]]
[[:^blank:]]
空白文字と一致します。
空白以外の文字と一致します。
[[:cntrl:]]
[[:^cntrl:]]
制御文字と一致します。
制御文字以外の文字と一致します。
[[:digit:]]
[[:^digit:]]
数字と一致します。\dと同じ意味です。
数字以外の文字と一致します。\Dと同じ意味です。
[[:graph:]]
[[:^graph:]]
空白文字以外の表示可能な文字です。[[:alnum:][:punct:]]と同じ意味です。
表示可能な文字ではありません。[^[:alnum:][:punct:]]と同じ意味です。
[[:lower:]]
[[:^lower:]]
小文字と一致します。
小文字と一致しません。
[[:print:]]
[[:^print:]]
文字列を印刷します。
文字列を印刷しません。
[[:punct:]]
[[:^punct:]]
句読点または表示可能な文字(空白および英数字以外)と一致します。
句読点または表示可能な文字(空白および英数字以外)と一致しません。
[[:space:]]
[[:^space:]]
空白と一致します。\sと同じ意味です。
空白と一致しません。\Sと同じ意味です。
[[:upper:]]
[[:^upper:]]
大文字と一致します。
大文字と一致しません。
[[:word:]]
[[:^word:]]
単語と一致します。\wと同じ意味です。
単語と一致しません。\Wと同じ意味です。
[[:xdigit:]]
[[:^xdigit:]]
16進文字と一致します。
16進文字と一致しません。

先読みと後読みの動作

先読みと後読みは、特定のテキストが存在するかどうかを確認するために一致の前または後ろを検索する方法です。先読みまたは後読みで検索されたテキストは、最終的な一致には含まれません。たとえば、末尾が"Jr."の名前を検索し、一致には"Jr."が含まれないようにするには、正規表現/.*(?=Jr\.)/を使用します。値"John Wainright Jr."の場合、この正規表現は"Jr."の前にある"John Wainright"を一致と見なします。
先読みと後読みの動作
メタ文字
説明
(?=...)
ゼロ幅の正の先読みアサーションを指定します。たとえば、正規表現regex1 (?=regex2)では、regex1regex2の両方が一致する場合に一致と見なされます。regex2は最終的な一致には含まれません。
(?!...)
ゼロ幅の負の先読みアサーションを指定します。たとえば、正規表現regex1 (?!regex2)では、regex1が一致してregex2は一致しない場合に一致と見なされます。regex2は最終的な一致には含まれません。
(?<=...)
ゼロ幅の正の後読みアサーションを指定します。たとえば、正規表現(?<=regex1) regex2では、regex1regex2の両方が一致する場合に一致と見なされます。regex1は最終的な一致には含まれません。固定幅の後読みのみで動作します。
(?<!...)
ゼロ幅の負の後読みアサーションを指定します。固定幅の後読みのみで動作します。

コメントとインライン修飾子

この表のメタ文字には、かっこ内の最初の要素として疑問符が含まれています。疑問符に続く文字は拡張子です。
コメントとインライン修飾子
メタ文字
説明
(?#text)
テキストが無視されるコメントを指定します。
(?imsx)
1つ以上の埋め込まれたパターンマッチングの修飾子を指定します。パターンが大文字と小文字を区別しない場合、パターンの先頭に(?i)を使用できます。たとえば、$pattern="(?i)foobar";と指定します。ハイフン(-)の後の文字では修飾子がオフになります。

結合演算子を使用した最適な条件の選択

前述の表に示した基本的な正規表現(\aや\wなど)は、入力文字列内の指定した位置で多くても1つの部分文字列のみと一致します。ただし、一般的な正規表現内で結合を行う演算子では、基本的なメタ文字を組み合わせてより複雑なパターンを作成できます。あいまいな状況では、これらの演算子で最適な一致または不適切な一致を判断できます。最適な一致が常に選択されます。
結合演算子を使用した最適な一致
メタ文字
説明
ST
次の例では、ABとA'B'を指定します。AとA'はSによって一致する部分文字列で、BとB'はTによって一致する部分文字列です。
  • SにとってA'よりもAの方が適切な一致の場合、ABがA'B'よりも適切な一致になります。
  • AとA'が同じでTにとってB'よりもBの方が適切な一致の場合、ABがAB'よりも適切な一致になります。
S|T
Sが一致する場合、Tのみが一致する場合よりも適切な一致であることを指定します。Sに対する2つの一致の順序は、Sの順序と同じです。同様に、Tに対する2つの一致の順序は、Tの順序と同じです。
S{repeat-count}
SSS . . . ..S (必要な回数分繰り返す)と一致します。
S{min,max}
S{max}|S{max-1}| . . . ..|S{min+1}|S{min}と一致します。
S{min,max}?
S{min}|S{min+1}| . . . ..|S{max-1}|S{max}と一致します。
S?, S*, S+
それぞれS{0,1}、S{0, big-number}、S{1,big-number}と同じ意味です。
S??, S*?, S+
それぞれS{0,1}?、S{0, big-number}?、S{1,big-number}?と同じ意味です。
(?=S)、(?<=S)
Sに最適な一致を考慮します (これは、Sにキャプチャのかっこが含まれ、正規表現全体の他の場所で前方参照が使用されている場合にのみ重要です)。
(?!S)、(?<!S)
このグループ化演算子では、Sが一致するかどうかのみが重要なため、順序を記述する必要はありません。
前のページ|次のページ|ページの先頭へ