正規表現の制御文字

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

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

表 1. 正規表現のメタ文字
文字 セットの外部で使用可能 セットの内部で使用可能 説明
¥a はい はい ベル (¥u0007) に一致します。
¥A はい   入力の先頭に一致します。¥A は入力内の改行の後とは一致しないため、^ とは異なります。
¥b はい   現在位置がワード境界である場合に一致します。境界は、ワード (¥w) と非ワード (¥W) の文字が切り替わるところにあります。結合マークは無視されます。
¥B はい   現在位置がワード境界でない場合に一致します。
¥cX はい はい control-X 文字に一致します。
¥d はい はい Unicode 汎用カテゴリー Nd (Number, Decimal Digit (数値、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 はい   後方参照。n 番目のキャプチャー・グループに一致する内容に一致します。n は、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} と等価です。