正規表現|メタ文字一覧

位置の指定

メタ文字意味
^行の先頭
$行の末尾
\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」を検索する場合。

正規表現検索結果
最長一致^.*XabcXdefX
最短一致^.*?XabcX
強欲な数量子^.*+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