正規表現構文早見表
このページでは、RegExp ガイドの記事の内容を集約して、RegExp 構文のすべての機能を網羅した全体的な早見表を提供します。特定のトピックに関する詳細な情報が必要な場合は、対応する見出しのリンクを辿って完全な記事にアクセスするか、ガイドに移動してください。
文字クラス
文字クラスは、文字の種類を判別するものです。例えば、文字と数字を判別することができます。
文字 | 意味 |
---|---|
[xyz]
|
文字クラス。囲んだ文字のいずれかに一致します。ハイフンを使用して文字の範囲を指定することもできますが、ハイフンが角括弧で囲まれた最初または最後の文字として現れた場合、それは通常の文字として文字クラスに含めるためのリテラルハイフンと見なされます。
例えば、
例えば、
例えば、 |
|
否定または補完する文字クラス。つまり、括弧で囲まれていないもの全てに一致します。ハイフンを使用して文字の範囲を指定することができますが、ハイフンが メモ: ^ の文字は入力の先頭も意味することがあります。 |
. |
次のいずれかの意味を持ちます。
複数行フラグ (
|
\d |
あらゆる(アラビア)数字に一致します。 |
\D |
あらゆる(アラビア)数字以外の文字に一致します。 |
\w |
アンダースコアを含むあらゆる半角英数字(基本ラテンアルファベット)に一致します。 |
\W |
基本ラテンアルファベットの文字以外に一致します。 |
\s |
ホワイトスペース 1 文字に一致します。例えば空白、タブ、改ページ、改行、その他の Unicode 空白文字などです。 |
\S |
ホワイトスペース以外の 1 文字に一致します。 |
\t |
水平タブに一致します。 |
\r |
復帰文字に一致します。 |
\n |
行送り文字に一致します。 |
\v |
垂直タブに一致します。 |
\f |
改ページに一致します。 |
[\b] |
後退文字に一致します。単語境界文字 (\b ) を探す場合はアサーションを参照してください。
|
\0 |
NUL 文字に一致します。この後ろに他の数字を続けてはいけません。 |
\cX
|
キャレット記法を使用した制御文字に一致します。 "X" には A–Z の文字が入ります(コードポイント |
\xhh
|
hh (2 桁の 16 進数)コードからなる文字に一致します。
|
\uhhhh
|
hhhh (4 桁の 16 進数)の値からなる UTF-16 コードユニットに一致します。
|
\u{hhhh} または \u{hhhhh}
|
(u フラグがセットされた時のみ) U+hhhh または U+hhhhh (16 進数) Unicode 値からなる文字に一致します。
|
\ |
次の文字を特別に扱うこと、「エスケープ」することを示します。 その振る舞いは、2 通りのうちのどちらか 1 つです。
なお、
メモ: この文字を文字通りに一致させるには、それ自身をエスケープしてください。つまり、 |
x|y
|
論理和: "x" または "y" に一致します。パイプ (
メモ: 論理和は「選択肢の集合」を指定するもう一つの方法ですが、文字クラスではありません。論理和は独立したものではありません。大きなパターンの一部にするためにはグループを使用する必要があります。 |
アサーション
アサーションには、行や単語の先頭と末尾を示す境目、他にも何らかの形で一致が可能であることを示すパターン(先読み、後読み、条件式など)が含まれます。
境界型のアサーション
文字 | 意味 |
---|---|
^ |
入力の先頭に一致します。複数行フラグが true
にセットされている場合は、改行文字の直後にも一致します。例えば
メモ: この文字は、文字クラスパターンの先頭にある場合は異なる意味を持ちます。 |
$ |
入力の末尾に一致します。複数行フラグが true
にセットされている場合は、改行文字の直前にも一致します。例えば
|
\b |
単語の区切りに一致します。これは、単語構成文字と後に続く非単語構成文字の間、または非単語構成文字と後に続く単語構成文字の間、または文字列の先頭・末尾です。単語の区切りは一致する「文字」ではありません。アンカーのように、単語の区切りは一致した部分に含まれません。言い換えると、一致した単語の区切りの長さは 0 です。 例:
バックスペース文字 ( |
\B |
単語以外の境界に一致します。これは、前の文字と次の文字が同じ種類である位置のことです。どちらも単語でなければならないか、または、 2 つの文字の間や 2 つの空白の間など、どちらも非単語でなければなりません。文字列の先頭と末尾は、非単語とみなされます。一致した単語の境界と同じように、一致した非単語の境界も一致に含まれません。例えば、 |
その他のアサーション
メモ: ?
の文字は数量詞としても使用されます。
文字 | 意味 |
---|---|
x(?=y) |
先読みアサーション: "x" の後に "y" が続く場合のみ "x" に一致します。例えば、 |
x(?!y) |
否定先読みアサーション: "x" の後に "y" が続いていない場合のみ "x" に一致します。例えば、 |
(?<=y)x |
後読みアサーション: "x" の前に "y" がある場合のみ "x" に一致します。例えば、 |
(?<!y)x |
否定後読みアサーション: "x" の前に "y" がない場合のみ "x" に一致します。例えば、 |
グループと後方参照
グループと後方参照は、式の文字のグループを示します。
文字 | 意味 |
---|---|
(x) |
キャプチャグループ:
正規表現は複数のキャプチャグループを持つことができます。結果、一般的にキャプチャグループ内の左括弧と同じ順にある、配列の要素のキャプチャグループに一致しています。たいていの場合、これはキャプチャグループ自身の順番です。これはキャプチャグループがネストしている場合に重要です。一致は結果の要素の添字 ( キャプチャグループはパフォーマンス上の損失があります。一致した部分文字列を使わない場合はキャプチャしない括弧(後述)を使ったほうがいいでしょう。
|
(?<Name>x) |
名前付きキャプチャグループ: "x" に一致し、
例えば、電話番号からアメリカのエリアコードを取り出す際、 |
(?:x) |
非キャプチャグループ: "x" に一致しますが、一致した内容は記憶しません。一致した部分文字列は、結果の配列の要素 ([1], …, [n] ) や、あらかじめ定義されている RegExp オブジェクトのプロパティ ($1, …, $9 ) から呼び出すことはできません。
|
\n
|
"n" に正の整数が入ります。正規表現内において n 番目の括弧の部分に一致した最新の部分文字列への後方参照となります(括弧の数は左からカウントします)。例えば
|
\k<Name> |
例えば、
メモ: |
数量詞
数量詞は、一致する文字や表現の数を示します。
メモ: 以下の表の中で、アイテムは単一の文字だけでなく、文字クラス、Unicode プロパティエスケープ、グループと後方参照を示すこともあります。
文字 | 意味 |
---|---|
x*
|
直前のアイテム "x" の 0 回以上の繰り返しに一致します。例えば
|
x+
|
直前のアイテム "x" の 1 回以上の繰り返しに一致します。 |
x?
|
直前のアイテム "x" の 0 回か 1 回の出現に一致します。例えば
|
x{n}
|
"n" には正の整数が入ります。直前のアイテム "x" がちょうど "n" 回出現するものに一致します。例えば |
x{n,}
|
"n" には正の整数が入ります。直前のアイテム "x" の少なくとも "n"
回の出現に一致します。例えば、 |
x{n,m}
|
"n" には 0 と正の整数が、 "m" には "n"
より大きい正の整数が入ります。直前のアイテム "x" が少なくとも "n"
回、多くても "m" 回出現するものに一致します。例えば
|
|
既定では
|
Unicode プロパティエスケープ
Unicode プロパティエスケープでは、 Unicode プロパティに基づいた文字の照合を行うことができます。
// バイナリー値でないもの
/\p{UnicodePropertyValue}/
/\p{UnicodePropertyName=UnicodePropertyValue}/
// バイナリー値と非バイナリー値
/\p{UnicodeBinaryPropertyName}/
// 否定: \P は \p の否定
/\P{UnicodePropertyValue}/
/\P{UnicodeBinaryPropertyName}/
UnicodeBinaryPropertyName
-
バイナリープロパティの名前。例えば、
ASCII
,Alpha
,Math
,Diacritic
,Emoji
,Hex_Digit
,Math
,White_space
, など。詳しくは Unicode Data PropList.txt を参照してください。 UnicodePropertyName
-
非バイナリープロパティの名前です。
- General_Category (
gc
) - Script (
sc
) - Script_Extensions (
scx
)
PropertyValueAliases.txt も参照してください。
- General_Category (
UnicodePropertyValue
-
下記の「値」の節に掲載されているトークンの 1 つです。多くの値には、別名や短縮形があります(例えば
General_Category
プロパティの値Decimal_Number
はNd
,digit
,Decimal_Number
と書くことができます)。ほとんどの値では、UnicodePropertyName
の部分と等号を省略することができます。UnicodePropertyName
を指定した場合、その値は指定されたプロパティの種類に対応するものでなければなりません。
メモ: 利用できるプロパティと値は膨大であるため、ここでは網羅的に記述することはせず、様々な例を提供することにします。