- 用途別 正規表現テンプレート集(Python向け)
- 1 メールアドレス(簡易)
- 2 URL(http/https、簡易)
- 3 ドメイン名(例 example.com)
- 4 IPv4 アドレス(簡易抽出)
- 5 日本の携帯電話(ハイフンあり)
- 6 電話番号(ハイフン任意の簡易版)
- 7 日付(YYYY-MM-DD、簡易バリデーション)
- 8 日付(YYYY/MM/DD や YYYY.MM.DD など複数区切り対応)
- 9 時刻(HH:MM 24時間)
- 10 数字(整数、符号付き)
- 11 浮動小数点(符号あり、指数表記含む簡易)
- 12 カンマ区切り金額(例 1,234,567)
- 13 クレジットカード風(IIN無関係、16桁グループ)
- 14 16進カラーコード(#RRGGBB)
- 15 JSON風キーと値(簡易、キー名を取得)
- 16 HTML タグ(タグ名抽出、簡易)
- 17 HTML タグの属性値(例 class=”foo”)
- 18 CSV 一行の単純なフィールド分割(カンマで分割、引用符なし想定)
- 19 ログファイルから ERROR 行抽出(行頭の ERROR:)
- 20 英単語(単語境界)
- 21 日本語(ひらがな・カタカナ・漢字の単語抽出、簡易)
- 22 パス(Windows)
- 23 パス(Unix系)
- 24 名前付きグループで年月日を取得
- 25 前方参照(ID: に続く数字のみ抽出)
- 実践時のチェックリストとコツ
用途別 正規表現テンプレート集(Python向け)
以下は「よくある用途」を想定した実用的テンプレート集です。各項目に「概要」「正規表現(生文字列 r’…’ 推奨)」「簡単な Python の使い方」「注意点」を示します。まずはテンプレートをコピペしてテストし、必要に応じて調整してください。
1 メールアドレス(簡易)
- 正規表現: r”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}”
- 使い方:
import re
re.findall(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}", text)
Python- 注意: 実運用の厳密検証には向かない。国際ドメインや引用符付きローカル部は未対応。
2 URL(http/https、簡易)
- 正規表現: r”https?://[^\s”‘<>]+”
- 使い方:
re.findall(r"https?://[^\s\"'<>]+", text)
Python- 注意: クエリや末尾の句読点処理は必要に応じて追加。
3 ドメイン名(例 example.com)
- 正規表現: r”\b(?:[A-Za-z0-9-]+.)+[A-Za-z]{2,}\b”
- 使い方:
re.findall(r"\b(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}\b", text)
Python- 注意: サブドメイン、IDN(国際化ドメイン)は別途処理。
4 IPv4 アドレス(簡易抽出)
- 正規表現: r”\b(?:\d{1,3}.){3}\d{1,3}\b”
- 使い方:
re.findall(r"\b(?:\d{1,3}\.){3}\d{1,3}\b", text)
Python- 注意: 0–255 の厳密チェックは行わない。厳密版は範囲指定が必要。
5 日本の携帯電話(ハイフンあり)
- 正規表現: r”\b0[789]0-\d{4}-\d{4}\b”
- 使い方:
re.findall(r"\b0[789]0-\d{4}-\d{4}\b", text)
Python- 注意: 格納形式に依存。ハイフンなしは別パターン。
6 電話番号(ハイフン任意の簡易版)
- 正規表現: r”\b0\d{1,4}-?\d{1,4}-?\d{4}\b”
- 使い方:
re.findall(r"\b0\d{1,4}-?\d{1,4}-?\d{4}\b", text)
Python- 注意: 誤検出を防ぐため文脈確認を推奨。
7 日付(YYYY-MM-DD、簡易バリデーション)
- 正規表現: r”\b(19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b”
- 使い方:
re.findall(r"\b(19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b", text)
Python- 注意: うるう年や月ごとの日数は別処理。
8 日付(YYYY/MM/DD や YYYY.MM.DD など複数区切り対応)
re.findall(r"\b(19|20)\d{2}[./-](0[1-9]|1[0-2])[./-](0[1-9]|[12]\d|3[01])\b", text)
Python9 時刻(HH:MM 24時間)
- 正規表現: r”\b([01]\d|2[0-3]):[0-5]\d\b”
- 使い方:
re.findall(r"\b([01]\d|2[0-3]):[0-5]\d\b", text)
Python10 数字(整数、符号付き)
- 正規表現: r”[+-]?\d+”
- 使い方:
re.findall(r"[+-]?\d+", text)
Python- 注意: 浮動小数点は別パターン。
11 浮動小数点(符号あり、指数表記含む簡易)
- 正規表現: r”[+-]?(?:\d+.\d*|.\d+|\d+)(?:[eE][+-]?\d+)?”
- 使い方:
re.findall(r"[+-]?(?:\d+\.\d*|\.\d+|\d+)(?:[eE][+-]?\d+)?", text)
Python12 カンマ区切り金額(例 1,234,567)
- 正規表現: r”\b\d{1,3}(?:,\d{3})*\b”
- 使い方:
re.findall(r"\b\d{1,3}(?:,\d{3})*\b", text)
Python13 クレジットカード風(IIN無関係、16桁グループ)
- 正規表現: r”\b(?:\d{4}[- ]?){3}\d{4}\b”
- 使い方:
re.findall(r"\b(?:\d{4}[- ]?){3}\d{4}\b", text)
Python- 注意: 実カード番号の取り扱いは厳重注意(個人情報保護)。
14 16進カラーコード(#RRGGBB)
- 正規表現: r”#([A-Fa-f0-9]{6})\b”
- 使い方:
re.findall(r"#([A-Fa-f0-9]{6})\b", text)
Python15 JSON風キーと値(簡易、キー名を取得)
- 正規表現: r'”\s([A-Za-z0-9_]+)\s“\s*:’
- 使い方:
re.findall(r'"\s*([A-Za-z0-9_]+)\s*"\s*:', text)
Python- 注意: 厳密な JSON 解析は json モジュールを使う。
16 HTML タグ(タグ名抽出、簡易)
- 正規表現: r”</?([a-zA-Z][a-zA-Z0-9])\b[^>]>”
- 使い方:
re.findall(r"</?([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>", html)
Python- 注意: HTML は正規表現で完全に扱うのは困難。解析は BeautifulSoup 等推奨。
17 HTML タグの属性値(例 class=”foo”)
- 正規表現: r’\bclass\s=\s“([^”]*)”‘
- 使い方:
re.findall(r'\bclass\s*=\s*"([^"]*)"', html)
Python- 注意: シングルクォートにも対応するなら別パターンを用意。
18 CSV 一行の単純なフィールド分割(カンマで分割、引用符なし想定)
- 正規表現: r”([^,]+)”
- 使い方:
re.findall(r'([^,]+)', line)
Python- 注意: フィールドにカンマや引用符が混在する場合は csv モジュールを使う。
19 ログファイルから ERROR 行抽出(行頭の ERROR:)
- 正規表現: r”^ERROR:.*$”
- 使い方:
re.findall(r"^ERROR:.*$", text, flags=re.M)
Python20 英単語(単語境界)
- 正規表現: r”\b[a-zA-Z]+\b”
- 使い方:
re.findall(r"\b[a-zA-Z]+\b", text)
Python21 日本語(ひらがな・カタカナ・漢字の単語抽出、簡易)
- 正規表現: r”[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF]+”
- 使い方:
re.findall(r"[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF]+", text)
Python- 注意: 句読点や括弧は別処理、Unicode 範囲は必要に応じ調整。
22 パス(Windows)
- 正規表現: r”[A-Za-z]:\(?:[^\/:?”<>|\r\n]+\)[^\/:?”<>|\r\n]“
- 使い方:
re.findall(r"[A-Za-z]:\\(?:[^\\/:*?\"<>|\r\n]+\\)*[^\\/:*?\"<>|\r\n]*", text)
Python- 注意: 生のバックスラッシュを扱うため r”…” を使う。Linux パスは別パターン。
23 パス(Unix系)
- 正規表現: r”(?:/[^/\s]+)+/?”
- 使い方:
re.findall(r"(?:/[^/\s]+)+/?", text)
Python24 名前付きグループで年月日を取得
- 正規表現: r”(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})”
- 使い方:
m = re.search(r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", text)
if m:
year = m.group("year")
Python25 前方参照(ID: に続く数字のみ抽出)
- 正規表現: r”(?<=ID:)\d+”
- 使い方:
re.findall(r"(?<=ID:)\d+", text)
Python- 注意: 固定の前置が必須な場合に便利。
実践時のチェックリストとコツ
- r”…”(生文字列)を基本に使う。バックスラッシュの扱いが楽になる。
- 抽出後は int()・datetime 変換や追加バリデーションで安全化する。
- 複雑な構造(HTML、CSV、JSON)は専用ライブラリを優先する。
- 長い正規表現は re.VERBOSE でコメントを付けると読みやすくなる。
- テスト文字列を複数用意して境界条件(先頭末尾、空文字、異常値)を確認する。
