正規表現の制御文字

制御文字とは、正規表現で使用可能なメタ文字、演算子、および置換テキスト文字のことです。

半角文字のみ認識されます。 以下の表の文字に対応する全角文字は認識されません。

表 1. 正規表現のメタ文字
文字 セットの外部で使用可能 セットの内部で使用可能 説明
\a はい はい ベル (\u0007) に一致します。
\A はい   入力の先頭に一致します。 ^ とは異なり、\A は入力内の新しい行の後には一致しません。
\b はい   現在位置がワード境界である場合に一致します。 境界は、ワード (\w) 文字と非ワード (\W) 文字箇所が切り替わる箇所で発生し、結合マークは無視されます。
\B はい   現在位置がワード境界でない場合に一致します。
\cX はい はい control-X 文字に一致します。
\d はい はい Unicode 汎用カテゴリー Nd (数値、10 進数) の任意の文字に一致します。
\D はい はい 10 進数字以外のすべての文字に一致します。
\e はい はい エスケープ (\u001B) に一致します。
\E はい はい \Q ... \E 引用符で囲まれた文字列を終了します。
\f はい はい 用紙送り文字 (\u000C) に一致します。
\G はい   現行位置が前回の一致の終わりである場合に一致します。
\n はい はい 改行 (\u000A) に一致します。
\N{UNICODE CHARACTER NAME} はい はい 指定された文字に一致します。
\p{UNICODE PROPERTY NAME} はい はい 指定された Unicode プロパティーを持つ任意の文字に一致します。
\P{UNICODE PROPERTY NAME} はい はい 指定された Unicode プロパティーを持たない任意の文字に一致します。
\Q はい はい この文字から \E までの間のすべての文字を引用符で囲みます。
\r はい はい 復帰 (\u000D) に一致します。
\s はい はい 空白文字に一致します。 空白は [\t\n\f\r\p{Z}] として定義されます。
\S はい はい 空白文字以外の文字に一致します。
\t はい はい 水平タブ (\u0009) に一致します。
\uhhhh はい はい 16 進値 hhhh で表される文字に一致します。
\Uhhhhhhhh はい はい 16 進値 hhhhhhhhを持つ文字に一致します。 Unicode の最大コード・ポイントは \U0010ffff ですが、8 桁の 16 進数値を正確に指定する必要があります。
\w はい はい 単語構成文字に一致します。 単語構成文字は以下のとおりです。

[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\u200c\u200d]

\W はい はい 非単語構成文字に一致します。
\x{hhhh} はい はい 16 進数値 hhhh で表される文字に一致します。 1 から 6 桁の 16 進数値を指定できます。
\xhh はい はい 2 桁の 16 進値 hh で表される文字に一致します。
\X はい   書記素クラスターに一致します。
\Z はい   現行位置が入力の終わりである場合 (最終行末文字がある場合はさらに最終行末文字より前にある場合) に一致します。
\z はい   現行位置が入力の終わりである場合に一致します。
\n はい   後方参照。 nth 番目のキャプチャー・グループに一致する内容と一致します。 n は、1 より大きく( > 1)、パターン内のキャプチャー・グループの総数より小さい (<) 数でなければなりません。
\0ooo はい はい 8 進数文字に一致します。 'ooo' は、1 から 3 桁の 8 進数です。 0377 が最大の 8 進文字です。 先頭ゼロは必須です。これにより、8 進定数を後方参照と区別します。
[pattern] はい はい セット内の 1 文字に一致します。
. はい   任意の文字に一致します。
^ はい   行の先頭に一致します。
$ はい   行の終わりに一致します。
\ はい   後続の文字を引用符で囲みます。 リテラルとして扱うために引用符で囲む必要がある文字は、* ? + [ ( ) { } ^ $ | \ . / です。
\   はい 後続の文字を引用符で囲みます。 リテラルとして扱うために引用符で囲む必要がある文字は、[ ] \ です。
コンテキストに応じて引用符で囲む必要がある可能性がある文字は、- & です。
表 2. 正規表現の演算子
演算子 説明
| 選択演算子。 A|BA または B のいずれかに一致します。
* 0 回以上の繰り返しに一致します。 できる限り長い繰り返しに一致します。
+ 1 回以上の繰り返しに一致します。 できる限り長い繰り返しに一致します。
? 0 回または 1 回の繰り返しに一致します。 1 回が優先されます。
{n} ちょうど n 回の繰り返しに一致します。
{n,} n 回以上の繰り返しに一致します。 できる限り長い繰り返しに一致します。
{n,m} n 回から m 回の繰り返しに一致します。 できる限り長い繰り返し (ただし、m 回以下) に一致します。
*? 0 回以上の繰り返しに一致します。 できる限り短い繰り返しに一致します。
+? 1 回以上の繰り返しに一致します。 できる限り短い繰り返しに一致します。
?? 0 回または 1 回の繰り返しに一致します。 0 回が優先されます。
{n}? ちょうど n 回の繰り返しに一致します。
{n,}? n 回以上の繰り返しに一致しますが、パターン全体の一致に必要な回数を超えてはなりません。
{n,m}? n 回から m 回の繰り返しに一致します。 できるだけ少ない回数 (ただし、n 回以上) に一致します。
*+ 0 回以上の繰り返しに一致します。 最初に検出されたときに、できる限り長い繰り返しに一致します。全体一致が失敗しても、 再試行の回数を少なくしません (強欲な一致)
++ 1 回以上の繰り返しに一致します。 強欲な一致。
?+ 0 回または 1 回の繰り返しに一致します。 強欲な一致。
{n}+ ちょうど n 回の繰り返しに一致します。
{n,}+ n 回以上の繰り返しに一致します。 強欲な一致。
{n,m}+ n 回から m 回の繰り返しに一致します。 強欲な一致。
( ... ) キャプチャー括弧。 一致の後、括弧内の副次式に一致する範囲の入力が可能になります。
(?: ... ) 非キャプチャー括弧。 括弧内のパターンをグループ化しますが、一致したテキストのキャプチャーは行いません。 キャプチャー括弧よりも効率的です。
(?> ... ) アトミック・マッチ括弧。 括弧内の副次式との最初の一致のみが試みられます。 パターン全体の一致にならない場合は、"(?>" の前の位置で一致検索を終了します。
(?# ... ) 自由形式のコメント ((?# comment ))
(?= ... ) 先読みアサーション。 括弧で囲まれたパターンが現在の入力位置に一致する場合に真ですが、入力位置を前に移動しません。
(?! ... ) 否定先読みアサーション。 括弧で囲まれたパターンが現在の入力位置に一致しない場合に真です。 入力位置を前に移動しません。
(?<= ... ) 後読みアサーション。 括弧で囲まれたパターンが、現在の入力位置より前のテキストに一致する場合に真です。 一致の最終文字は、現在位置の直前の入力文字です。 入力位置は変更されません。 後読みパターンに一致するストリングの長さは、無制限であってはなりません (* または + 演算子は使用できません)。
(?<!...) 否定後読みアサーション。 括弧で囲まれたパターンが、現在の入力位置より前のテキストに一致しない場合に真です。 一致の最終文字は、現在位置の直前の入力文字です。 入力位置は変更されません。 後読みパターンに一致するストリングの長さは、無制限であってはなりません (* または + 演算子は使用できません)。
(?ismwx-ismwx: ... ) フラグ設定。 括弧で囲んだ式と指定されたフラグ (有効または無効) が評価されます。
(?ismx-ismx) フラグ設定。 フラグ設定を変更します。 変更は、この設定の後に続くパターンの部分に適用されます。 例えば、(?i) は、大/小文字を区別しない一致に変更されます。
表 3. セット式 (文字クラス)
式の例 説明
[abc] ab、または c のいずれかの文字に一致します。
[^abc] 否定- ab、または c を除く任意の文字に一致します。
[A-M] 範囲- A から M までの任意の文字に一致します。 含まれる文字は、Unicode コード・ポイントの順序によって決まります。
[\u0000-\U0010ffff] 範囲 - すべての文字に一致します。
[\p{Letter}] 
[\p{General_Category=Letter}] 
[\p{L}]
Unicode カテゴリー = Letter の文字。表示されているすべての形式は等価です。
[\P{Letter}] プロパティーの否定。 (大文字 \P) Letter 以外のすべてに一致します。
[\p{numeric_value=9}] 数値が 9 であるすべての数値に一致します。 セット式では任意の Unicode プロパティーを使用できます。
[\p{Letter}&&\p{script=cyrillic}] 論理 AND または交差。 すべてのキリル文字のセットに一致します。
[\p{Letter}--\p{script=latin}] 減算。 すべての非ローマ字に一致します。
[[a-z][A-Z][0-9]] [a-zA-Z0-9]] 暗黙的な論理 OR または和集合。 この例では ASCII 文字および数字に一致します。 これらの 2 つの形式は等価です。
[:script=Greek:] プロパティーに関する、POSIX のような代替構文。 \p{script=Greek} と等価です。