Javaで使える正規表現メタ文字まとめ(未完成)

Javaで使える正規表現のメタ文字をメモ。

文字クラス

.	任意の一文字
[abc]	abcのどれか1文字
[^abc]	否定(どれにもあてはまらない、他の文字。空白行にはマッチしない。)
[a-z]	範囲指定("-"は先頭であればリテラル、先頭でなければ範囲指定子となる)

量指定子(直前の文字およびグループが現れる量を指定できる)

欲張り量指定(最長マッチ)
?	0...1
+	1...n
*	0...n
{n}	n
{n1,n2}	n1...n2
非欲張り量指定(最短マッチ)
??		0...1
+?		1...n
*?		0...n
{n}?		n
{n1,n2}?	n1...n2

文字クラス略記

1文字を表すクラス
\s	空白1文字をあらわす文字クラス
\S	\s以外のもの[^\s]と同意
\t	タブ1文字をあらわす文字クラス
\r	キャリッジリターンを表す文字クラス
\n	改行を表す文字クラス
\d	1桁の数字
\D	[^\d]と同意
単語等複数文字を表すクラス
\w	英語と数字の組み合わせの単語
\W	[^\w]と同意
文字そのものではなく位置を表すクラス
\b	単語境界をあらわす(\bregex\b は " regex "にマッチするが"aregex"にマッチしない)
^	行および文字列の先頭
$	行および文字列の末尾

文字クラス同士の集合演算

&&	and(例:[[a-z]&&[^g]] gを除く小文字アルファベット)
	or(例:[[a-z]0] 小文字アルファベットもしくは0)

論理

|      例:ebc|def abcもしくはdefと一致

グループ

(abc|def)ghi	|の適用範囲を限定。abcghiもしくはdefghiのどちらかと一致する。
(abc)?		量指定子の適用範囲をグルーピング"abc"という文字列の繰り返し制御。
(abc)\1	戻り参照(\1は、直前()内で一致したものと同じもの、つまりabcabcという意味となる)
(a(b))(c)	abが\1 bが\2 cが\3として参照できる。"("が現れた順に、戻り参照番号が振られる。
(?:...)	"?:"で戻り参照なしのグループを定義できる。戻り参照番号が振られない。
(?=...)	"?="先読み。以降に指定した正規表現のマッチ部分の前の位置を表す。
(?!...)	"?!"否定先読み。以降に指定した正規表現にマッチしない部分の前の位置を表す。
(?>=...)	"?>=..." 戻り読み。以降に指定した正規表現のマッチ部分の後ろの位置をあらわす。
(?<!...)	"?<!..."否定戻り読み。以降に指定した正規表現にマッチしない部分の後ろの位置を表す。
(?<...)	"?<..."アトミックグループ。このグループにマッチした文字列は固定され、
		あとに続く正規表現はこのグループのマッチが終了した部分から再度マッチ処理を開始する。

エスケープ文字

\	各種メタ文字の前に記述することで、その意味を殺す

Javaの置換で使える戻り参照文字

$n	グループでキャプチャした文字の参照