概要
実務で安全かつ移植性高く使える正規表現リファレンス。 **フラグ構文(例:(?s),(?m),(?i)`)は使用せず**、OSやツール差に左右されにくい具体パターンのみを掲載。
改行コードと環境差
| OS |
改行コード |
推奨パターン |
要点 |
| Windows |
\r\n |
\r?\n |
CRLF/LF両対応の最小公倍数 |
| macOS / Linux |
\n |
\r?\n |
そのまま両対応可能 |
要点
- 改行検出や置換は
\r?\n を使えばWindows/macOS/Linuxを一括対応。
- 改行を含むブロック抽出は
(?:.|\r|\n) を基本にする(.は改行に一致しないため)。
Part 1: 基本文法(カテゴリ別・簡潔表)
1-1. 文字クラスと範囲指定
| 構文 |
意味 |
入力例 |
マッチ結果 |
. |
改行以外の任意1文字 |
a.c / abc |
abc |
[abc] |
a・b・cのいずれか1文字 |
bag |
a |
[^0-9] |
数字以外の1文字 |
a1 |
a |
[A-Z0-9] |
英大文字または数字 |
X8z |
X,8 |
1-2. 量指定子(繰り返し)
| 構文 |
意味 |
入力例 |
マッチ結果 |
* |
直前の文字を0回以上 |
goooogle |
goooo |
+ |
直前の文字を1回以上 |
google |
oo |
? |
直前の文字を0回または1回 |
color colour |
両方一致 |
{n} |
ちょうどn回 |
a{3} / aaa |
aaa |
{n,} |
n回以上 |
a{2,} / aaaa |
aaaa |
{n,m} |
n〜m回 |
a{2,4} / aaaaa |
aaaa |
1-3. 位置指定(アンカー)
| 構文 |
意味 |
入力例 |
マッチ結果 |
^abc |
行頭のabc |
abc\nzabc |
1行目abc |
abc$ |
行末のabc |
zabc\nabc |
両行の末尾abc |
\bword\b |
単語境界のword |
word words |
word |
\Bing |
非単語境界のing |
ringing |
後半ing |
1-4. 特殊文字(略記)
| 構文 |
意味 |
入力例 |
マッチ結果 |
\d |
数字 [0-9] |
ver2.10 |
2,10 |
\D |
非数字 |
a1 |
a |
\w |
英数字・アンダースコア |
a_b-1 |
a_b |
\W |
非英数字 |
a# |
# |
\s |
空白類(空白/タブ/改行 等) |
a b |
中間空白 |
\S |
非空白 |
a b |
a,b |
\t |
タブ |
a\tb |
a[TAB]b |
1-5. 特殊記号とエスケープ
| 構文 |
意味 |
入力例 |
マッチ結果 |
\. |
ドットそのもの |
a.c |
a.c |
\* |
アスタリスクそのもの |
a*b |
a*b |
\+ |
プラス記号 |
a+b |
a+b |
\? |
疑問符そのもの |
what? |
what? |
\( \) |
括弧そのもの |
(test) |
(test) |
| |
パイプ文字 |
`a |
b` |
\\ |
バックスラッシュ |
C:\\path |
\\ |
\^ |
キャレット |
^abc |
^abc |
\$ |
ドル記号 |
total$ |
$ |
\[ \] |
角括弧そのもの |
[abc] |
[abc] |
\{ \} |
波括弧そのもの |
{a,b} |
{a,b} |
Part 2: グルーピング・分岐・先読み/後読み
| 構文 |
用途 |
入力例 |
マッチ結果 |
(abc)+ |
まとまりの繰り返し |
abcabcx |
abcabc |
| `(?:jpg |
png)` |
非キャプチャのOR |
file.png |
| `foo |
bar` |
OR条件 |
bar |
\d+(?=円) |
円の直前の数字 |
合計100円 |
100 |
^(?!.*error).* |
errorを含まない行 |
ok\nerror |
ok |
(?<=¥)\d+ |
¥の直後の数字 |
¥300 |
300 |
(?<!Mr\.)\s[A-Z] |
Mr.の直後ではない大文字 |
Ms. Alice |
A |
Part 3: 改行を含むテキストのマッチング例
| 用途 |
パターン |
入力例 |
マッチ結果 |
| HTMLブロック全体 |
`<div>(?:. |
\r |
\n)*?</div>` |
| ログ1件(日時〜次) |
`^[\d{4}-\d{2}-\d{2} [\d:]+](?:. |
\r |
\n)*?(?=^[\d{4}-\d{2}-\d{2} |
| Markdownコードブロック |
“ “`(?:. |
\r |
\n)*?“` “ |
| コメント(/…/) |
`/*(?:. |
\r |
\n)*?*/` |
Part 4: パターン集(否定・抽出)
| 用途 |
パターン |
入力例 |
マッチ結果 |
| 数字のみ |
^\d+$ |
123 |
123 |
| 英数字のみ |
^[A-Za-z0-9]+$ |
user01 |
user01 |
| メール(簡易) |
^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$ |
a@b.com |
a@b.com |
| URL |
https?://[\w.-]+\.[A-Za-z]{2,}(/[\w./?=&%-]*)? |
https://ex.com/a |
https://ex.com/a |
| ISO日付 |
\d{4}-\d{2}-\d{2} |
2025-10-30 |
2025-10-30 |
| 国際電話番号 |
\+\d{1,3}[\s-]?\d{1,14} |
+81 90 1234 5678 |
全体一致 |
| 強力なパスワード |
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ |
Abcd1234 |
全体一致 |
| HTMLコメント |
`<!–(?:. |
\r |
\n)*?–>` |
errorを含まない行 |
^(?!.*error).* |
ok\nerror |
ok |
Part 5: 置換例
| タスク |
パターン |
置換 |
入力例 |
出力結果 |
| 単語順を反転 |
(\w+)\s+(\w+) |
${2} ${1} |
John Doe |
Doe John |
| 区切り変更 |
; |
, |
a;b;c |
a,b,c |
| 空白統一 |
\s{2,} |
|
a b |
a b |
| HTMLタグ除去 |
<[^>]+> |
“ |
<p>a</p> |
a |
| Trim(前後空白除去) |
`^\s+ |
\s+$` |
“ |
a |
| 改行→空白 |
\r?\n |
|
a\nb |
a b |
| 行末コメント削除 |
//.*$ |
“ |
x=1;//note |
x=1; |
| 日付統一 |
(\d{4})/(\d{2})/(\d{2}) |
${1}-${2}-${3} |
2025/10/30 |
2025-10-30 |
| 連続重複行圧縮 |
^(.*)(\r?\n\1)+$ |
${1} |
同一行連続 |
1行化 |
まとめ
正規表現は多言語・多環境で動作し、スクリプトやログ解析、データ整備などに応用できます。