Regex

正規表現(せいきひょうげん) (Regular Expression)構文(こうぶん) クイックリファレンス。

文字マッチング

構文説明
.改行以外の任意の1文字にマッチ
\d任意の1桁の数字 (0-9) にマッチ
\D数字以外の文字にマッチ
\w英字、数字、アンダースコア [A-Za-z0-9_] にマッチ
\W英字、数字、アンダースコア以外の文字にマッチ
\s任意の空白文字 (スペース、タブ、改行など) にマッチ
\S空白以外の文字にマッチ

位置マッチング

構文説明
^文字列の先頭にマッチ
$文字列の末尾にマッチ
\b単語境界 (単語の開始または終了位置) にマッチ
\B単語境界以外にマッチ

繰り返し

構文説明
*前の文字を0回以上繰り返し
+前の文字を1回以上繰り返し
?前の文字を0回または1回
{n}前の文字をちょうど n 回繰り返し
{n,}前の文字を n 回以上繰り返し
{n,m}前の文字を n 回以上 m 回以下繰り返し

文字クラス

構文説明
[abc]角括弧内のいずれか1文字にマッチ
[^abc]角括弧内の文字以外にマッチ
[a-z]小文字 a から z にマッチ
[A-Z]大文字 A から Z にマッチ
[0-9]数字 0 から 9 にマッチ
[a-zA-Z0-9]英字と数字にマッチ

グループと論理演算

構文説明
(pattern)キャプチャグループを作成、複数文字をまとめて処理
|複数パターンのいずれかにマッチ(論理 OR)
(?:pattern)非キャプチャグループ、マッチ内容を保存しない
(?=pattern)肯定先読み(lookahead)
(?!pattern)否定先読み
(?<=pattern)肯定後読み(lookbehind)
(?<!pattern)否定後読み

特殊文字

構文説明
\エスケープ文字、特殊文字そのものにマッチ
\.ピリオドにマッチ
\\バックスラッシュにマッチ
\n改行にマッチ
\tタブにマッチ
\rキャリッジリターンにマッチ

よく使う組み合わせ

パターン説明
\d+1つ以上の数字にマッチ
\w+1つ以上の単語文字にマッチ
\s+1つ以上の空白文字にマッチ
[A-Za-z]+1つ以上の英字にマッチ
\b\w+\b完全な単語にマッチ
.*任意の文字(貪欲モード)
.*?任意の文字(非貪欲モード)

実用例

Email 検証

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

URL マッチング

https?:\/\/[^\s]+

電話番号(日本)

^0\d{1,4}-\d{1,4}-\d{4}$

IPv4 アドレス

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

日付形式 (YYYY-MM-DD)

^\d{4}-\d{2}-\d{2}$

HTML タグ

<[^>]+>

空白行を削除

^\s*$

引用符内の内容を抽出

["']([^"']+)["']

貪欲と非貪欲

パターン説明
.*貪欲モード:できるだけ多くの文字にマッチ
.*?非貪欲モード:できるだけ少ない文字にマッチ
.+?非貪欲の1つ以上
.??非貪欲の0つまたは1つ

文字列 <div>content</div> に対して:

  • <.*><div>content</div> にマッチ(貪欲)
  • <.*?><div> にマッチ(非貪欲)

修飾子

修飾子説明
i大文字小文字を無視
gグローバルマッチ
m複数行モード
s. が改行にもマッチ
x空白を無視(拡張モード)