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 | 空白を無視(拡張モード) |