1. メタ文字
  2. バックスラッシュを使った特殊記法

メタ文字や、バックスラッシュを使った特殊記法の表記について

メタ文字

PCREの正規表現のメタ文字には以下の2種類があります。

PCRE 正規表現構文・メタ文字(PHP マニュアル)

メタ文字でなく文字としたい場合は、メタ文字のエスケープ処理が必要です。

  • 角カッコ内以外のパターン中のどこででも使用できるメタ文字

  • 角カッコ内を除き、パターン中のどこででも使用できる文字は以下になります。

    メタ文字 説明
    \ This is a pen\. メタ文字などのエスケープ文字。例は、文末のメタ文字 "."をエスケープしている
    ^ ^This is a pen\. 検索文字列の先頭と一致します。
    $ This is a pen\.$ 検索文字列の末尾と一致します。
    . ..... 改行文字以外の任意の1文字。例は、5文字の文字列
    | This is a (pen|book)\. 選択肢。例の"(pen|book)"の部分は、"pen"または"book"になります。
    ( This is a (pen|book)\. サブパターンの開始。例の"(pen|book)"の部分は、"pen"または"book"になります。
    ( This is a (pen|book)\. サブパターンの終了。例の"(pen|book)"の部分は、"pen"または"book"になります。
    [ [Gg]oogle 文字クラス定義の開始。例の"[|g]"のような"["と"]"で囲まれた箇所は文字クラスと呼ばれます。 ここでは"G"または"g"になるので、"Google"または"google"になります。
    ] [0-9A-F] 文字クラス定義の終了。例の"[0-9A-F]"は、数字かA~Fの文字になります。 "[0-9A-F]+"なら16進数の検索な
    ? Go?gle 直前の文字またはサブパターンを、0回または1回だけ繰り返します。例はGogleまたはGoogle
    * Go*gle 直前の文字またはサブパターンを0回以上の繰り返し。 これは、{0,} と同じです。 例では、直前の文字"o"が0回以上の繰り返しとなり、"o*"は、"o"、"oo"、"ooo"、 "oooo"、....となります。 そのため、Gogle、Google、Gooogle、Goooogle、...になります。
    + Go+gle 直前の文字またはサブパターンを1回以上の繰り返し。これは、{1,} と同じです。例はGoogle、Gooogle、Goooogle、...
    { Go{2}gle 文字数の最小/最大指定の開始。例は、"o"が2個の"Goolge"になります。
    } Go{1,2}gle 文字数の最小/最大指定の終了。例は、"o"が1~2個になり、"Gogle"または"Goolge"になります。

  • 角カッコの中(文字クラス)だけ使用できる文字

  • パターン中の角カッコ ( "[" と "]" )で括まれた部分を「文字クラス」と言います。 この中だけで使用できるメタ文字は、次になります。

    メタ文字 説明
    \ one[_\-]two 角カッコで使用できるメタ文字のエスケープ文字。 例は、"-"をエスケープしていて、角カッコの中は、"_"または"-"になります。 そのため、一致する文字列は "one_two"または"one-two"になります。
    ^ [^0-9] 角カッコの先頭で使用されたときだけクラスの否定になります。例は、0~9の数字以外の文字に一致します。
    - [C-F] 文字の範囲の指定。例は、"C"から"F"の範囲("C"、"D"、"E"、"F")になります。 アルファベットだけの場合は、"[A-Za-z]"となります。

バックスラッシュを使った特殊記法

PCRE 正規表現構文・エスケープシーケンス(PHP マニュアル)

バックスラッシュ(日本語フォントでは"\")はメタ文字のエスケープするときに使用しますが、それ以外に特殊な記法があります。

  • 非表示文字(制御コードなど)の記法

  • 非表示文字(制御コードなど)の記法

    記法 説明
    \a アラーム、ベル文字 (16進 07)
    \f 改ページ(16進 0C)
    \n 改行(16進 0A)
    \r 復帰 (carriage return) (16進 0D)
    \t タブ (16進 09)
    \x?? 16 進コードで ?? 。例 16進のFFは、0xFFまたは0xff

  • 数字や文字などを簡単に表す略記法

  • 数字や文字などを簡単に表す略記法

    記法 説明
    \d 20\d{2,2} [0-9]と同じ数字です。例は、2000~2099の21世紀の西暦になります。
    \D ^\D{4,4} 数字(\d)以外の文字で、[^0-9]と同じ数字以外の文字。例は、先頭が数字以外の4文字。
    \w class\s(\w+) 単語構成文字(数字、アルファベットと"_")で、Perlが定義する単語と成り得る文字のこと。[a-zA-Z0-9_]と同じ。
    \W 単語構成文字(\w)以外の文字で、[^a-zA-Z0-9]と同じ
    \s スペース、タブ、改行など( HT[9]、LF[10]、FF[12]、CR[13]、スペース[32] )の空白文字で、[\f\n\r\t\v]と同じになります。 ロケールを指定したマッチングを行った場合には、128から255までのコードポイントの文字 (たとえば NBSP (A0)) も空白文字とみなされる可能性があります。 例は、空白文字で区切られた2個の単語の文字列となります。
    \S 空白文字(\s)以外の文字。