正規表現|メタ文字一覧
位置の指定
メタ文字 | 意味 |
---|---|
^ |
行の先頭 |
$ |
行の末尾 |
\A |
文字列の先頭 |
\z |
文字列の末尾 |
\Z |
文字列の末尾(行末記号を除く) |
\b |
単語境界 |
\B |
非単語境界 |
※ ^
, $
が「行の先頭・末尾」となるのはマルチラインモードの場合。シングルラインモードの場合は文字列全体の先頭・末尾になる。たいていはデフォルトでマルチラインモード。
制御文字や定義済みの表現
メタ文字 | 意味 |
---|---|
\ |
エスケープ文字(直後のメタ文字をエスケープする) |
\t |
タブ文字 |
\n |
改行コード(CR) |
\r |
改行コード(LF) |
\f |
改ページ |
\d |
数字 |
\D |
数字以外 |
\s |
空白文字(半角/全角スペース、タブ、改行、改ページ) |
\S |
空白文字以外 |
\w |
単語構成文字(文字、数字、アンダースコア) |
\W |
単語構成文字以外 |
ワイルドカードと繰り返しのメタ文字(量指定子)
直前のパターンの連続した繰り返しにマッチするメタ文字で、最長一致、最短一致、強欲な数量子がある。(a*)*
のように量指定子を入れ子にすることもできるが、正規表現エンジン内での比較回数(負荷)が激増する可能性があるため注意が必要。
最長一致 | 最短一致 | 強欲な数量子 | 意味 |
---|---|---|---|
. |
任意の1文字(改行コードを除く) | ||
* |
*? |
*+ |
直前の要素が0回以上 |
+ |
+? |
++ |
直前の要素が1回以上 |
? |
?? |
?+ |
直前の要素が0回または1回 |
{n} |
{n}? |
{n}+ |
直前の要素がn回 |
{n,} |
{n,}? |
{n,}+ |
直前の要素がn回以上 |
{n,m} |
{n,m}? |
{n,m}+ |
直前の要素がn回以上m回以下 |
最長一致
条件に合う一番長い部分に一致し、パターン全体が一致することを優先する。
最短一致
条件に合う一番短い部分に一致する。
強欲な数量子
条件に合う一番長い部分に一致し、パターン全体が一致することを優先しない。
例)「abcXdefX」を検索する場合。
正規表現 | 検索結果 | |
---|---|---|
最長一致 | ^.*X |
abcXdefX |
最短一致 | ^.*?X |
abcX |
強欲な数量子 | ^.*+X |
一致しない(※) |
強欲な数量子 | ^.*+ |
abcXdefX |
(※)^.*+
だけで全体に一致するため最後のXが一致しない。
候補からの選択を表すメタ文字(OR条件)
メタ文字 | 意味 |
---|---|
() |
グループ化(グループ化構成体) |
| |
いずれかの文字列(代替構成体) |
[] |
いずれかの1文字 |
|の用例
正規表現 | 意味 |
---|---|
abc|mno|xyz |
単純 abc、mno、xyzのいずれか |
abc.*X|m+o|xy?z |
候補にメタ文字を含める abcXXX、mXo、xzなど |
(abc|mno|xyz)X |
他の文字列と組み合わせる abcX、mnoX、xyzXのいずれか |
(abc|mno|xyz)* |
量指定子と組み合わせる abcabc、mnoabcxyzなど |
[]の用例
正規表現 | 意味 |
---|---|
[abc] |
単純(a、b、cいずれか1文字) |
[^abc] |
否定(a、b、c以外の1文字) |
[a-z] |
範囲指定(半角英小文字) |
[A-Z] |
範囲指定(半角英大文字) |
[0-9] |
範囲指定(半角数字) |
[ぁ-ん] |
範囲指定(ひらがな) |
[ァ-ヴ] |
範囲指定(カタカナ) |
[ヲ-゚] |
範囲指定(半角カタカナ) |
[a-zA-Z] |
結合(a~z または A~Z) |
[a-z&&[d-f]] |
交差(a~z かつ d~f) |
[a-z&&[^d-f]] |
減算(d~f を除く a~z) |
先読みと後読みのメタ文字
特定パターンの前方または後方で、別のパターンのマッチングを行う。
メタ文字 | 意味 | 用例 | 用例の意味 |
---|---|---|---|
?= |
肯定的先読み | foo(?=bar) |
直後がbarのfoo |
?! |
否定的先読み | foo(?!bar) |
直後がbarでないfoo |
?<= |
肯定的後読み | (?<=bar)foo |
直前がbarのfoo |
?<! |
否定的後読み | (?<!bar)foo |
直前がbarでないfoo |