|YX と Y のどちらかにマッチする。例えば
abc|def は abc と
def のどちらかにマッチし、abcdef
にはマッチしない。
マッチ検索は Y より X が優先される。
例えば abc|abcdef というパターンは、マッチ対象
abcdefghi の中の abc
にマッチし、abcdef にはマッチしない。
^XX がマッチ対象の先頭に位置する場合にマッチする。例えば
^def というパターンは、マッチ対象 defghi
の中の def にはマッチするが、マッチ対象
abcdefghi の中の def にはマッチしない。
複数行マッチ時は、X が行頭にある場合にもマッチする。つまり、 line feed (U+000A), carriage return (U+000D), line separator (U+2028), paragraph separator (U+2029) の直後にある X にもマッチする。
$X がマッチ対象の末尾に位置する場合にマッチする。例えば
def$ というパターンは、マッチ対象 abcdef
の中の def にはマッチするが、マッチ対象
abcdefghi の中の def にはマッチしない。
複数行マッチ時は、X が行末にある場合にもマッチする。つまり、 line feed (U+000A)、carriage return (U+000D)、line separator (U+2028)、 paragraph separator (U+2029) の直前にある X にもマッチする。
\byx と y のどちらかが単語文字であり、もう一方が単語文字でない場合にマッチする。
例えば、\bdef\b というパターンは、マッチ対象
abc-def-ghi の中の def にはマッチするが、
abcdefghi の中の def にはマッチしない。
\Byx と y の両方が単語文字であるか、どちらも単語文字でない場合にマッチする。
例えば、\Bdef\B というパターンは、マッチ対象
abcdefghi の中の def にはマッチするが、
abc-def-ghi の中の def にはマッチしない。
*0 文字以上の x にマッチする。
+1 文字以上の x にマッチする。
?0 文字または 1 文字の x にマッチする。
{a}a 文字の x にマッチする。
{a,}a 文字以上の x にマッチする。
{a,b}a 文字以上 b 文字以下の x にマッチする。
?x*、x+、x?、
x{a}、
x{a,}、
x{a,b}
の直後に ? を置くことで、反復量指定子を無欲化することができる。
反復量指定子を無欲化すると、できるだけ少ない回数の反復にマッチしようとする。 反復量指定子を無欲化しないと (貪欲な反復量指定子)、できるだけ多い回数の反復にマッチしようとする。
例えば、マッチ対象 abcabcabc に対して、
a[a-z]*c というパターンは abcabcabc にマッチするが、
a[a-z]*?c というパターンは abc にマッチする。
.. は改行文字以外の任意の 1 文字にマッチする。
\1、\2、\3…\1 や \2 はそれぞれ 1 番目、2 番目の捕捉括弧の内容を表す。例えば、
(a+)(b+)c\2\1 というパターンは abbcbba
や aaabcbaaa にマッチする。
\0\0 は null 文字 (U+0000) にマッチする。
\t\t は horizontal tab 文字 (U+0009) にマッチする。
\n\n は line feed 文字 (U+000A) にマッチする。
\v\v は vertical tab 文字 (U+000B) にマッチする。
\f\f は form feed 文字 (U+000C) にマッチする。
\r\r は carriage return 文字 (U+000D) にマッチする。
\d\d は、0 から 9 までの数字のどれか一つにマッチする。
\D\D は、0 から 9 までの数字以外の文字一つにマッチする。
\s\s は、一つの空白文字または改行文字にマッチする。
\S\S は、空白文字および改行文字以外の文字一つにマッチする。
\w\w は、単語文字のどれか一つにマッチする。
\W\W は、単語文字以外の文字一つにマッチする。
\cA、\cB、\cC…\cA は文字 U+0001 に、\cB は文字 U+0002 に、
\cC は文字 U+0003 にマッチする。以下、\cZまで同様。
\ca、\cb、\cc…は
\cA、\cB、\cC…と同じである。
\xAB\xAB は文字 U+00AB にマッチする。
ただし、A と B はそれぞれ十六進法の数字の一桁。
\uABCD\uABCD
は文字 U+ABCD にマッチする。
ただし、A、B、C、D はそれぞれ十六進法の数字の一桁。
\<記号>\<記号> はその <記号> にマッチする。
[文字列][文字列] は 文字列
に含まれるどれか一つの文字にマッチする。
文字列 の中に x-y が含まれる場合、
それは Unicode コードポイントにおいて x から y までの全ての文字を表す。
例えば、[a-d] は [abcd] と同じであり、
[a-dghp-s-] は [abcdghpqrs-]
と同じである。
文字列 の中に \b が含まれる場合、それは backspace 文字 (U+0008)
を意味する。文字列 の中では \B および
\1、\2、\3…は使えない。
文字列 の中に記号 ] を含めるには、\] とエスケープする。
文字列 の中では、上記例外を除いて \ で始まる各エスケープが使える。
[^文字列][^文字列] は 文字列
に含まれないどれか一つの文字にマッチする。
(X)(X) は X を一つの文字として扱うと同時に、
捕捉括弧を生成する。
例えば、(abc){3} というパターンは
abcabcabc にマッチする。
(?:X)(?:X) は X を一つの文字として扱う。
しかし捕捉括弧は生成しない。
(?=X)Y(?=X)Y は Y
の先頭部分が X にマッチするような Y にマッチする。
例えば、(?=a)\w{3} というパターンは、
abc や ayz にはマッチするが
Abc や xyz にはマッチしない。
(?=X) は捕捉括弧を生成しない。
(?!X)Y(?!X)Y は Y
の先頭部分が X にマッチしないような Y にマッチする。
例えば、(?!a)\w{3} というパターンは、
Abc や xyz にはマッチするが
abc や ayz にはマッチしない。
(?!X) は捕捉括弧を生成しない。
空白文字とは、horizontal tab (U+0009)、vertical tab (U+000B)、form feed (U+000C)、 space (U+0020)、no-break space (U+00A0)、およびその他の Unicode カテゴリ Zs の文字である。
改行文字とは、line feed (U+000A)、carriage return (U+000D)、line separator (U+2028)、 paragraph separator (U+2029) の四つである。
単語文字とは、0 から 9 までの数字、a から z までと A から Z までのアルファベット、および下線記号
_ のどれかである。
以下の記号はパターン文字ではないので、正規表現の中では特殊な役割を果たす。 これらの記号を単なる文字として扱うには、エスケープが必要。
^$\.*+?()[]{}|また、正規表現リテラルの中では、/ もエスケープが必要。