|
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 にもマッチする。
\b
yx と y のどちらかが単語文字であり、もう一方が単語文字でない場合にマッチする。
例えば、\bdef\b
というパターンは、マッチ対象
abc-def-ghi
の中の def
にはマッチするが、
abcdefghi
の中の def
にはマッチしない。
\B
yx と 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
…と同じである。
\x
AB\x
AB は文字 U+00AB にマッチする。
ただし、A と B はそれぞれ十六進法の数字の一桁。
\u
ABCD\u
ABCD
は文字 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 までのアルファベット、および下線記号
_
のどれかである。
以下の記号はパターン文字ではないので、正規表現の中では特殊な役割を果たす。 これらの記号を単なる文字として扱うには、エスケープが必要。
^$\.*+?()[]{}|
また、正規表現リテラルの中では、/
もエスケープが必要。