Python | 正規表現テンプレート集

Python
スポンサーリンク

実用的な正規表現全文集(Python 用・生文字列 r’…’ 推奨)

以下は前回のテストケースに対応する「そのまま使える」正規表現全文です。コピーして re.compile()/re.findall() に渡して使ってください。必要なら各パターンのフラグやテストスニペットも付けます。

注意点:どれも「現実的に使える」ように妥協して作っていますが、完全な RFC や仕様検証(うるう年判定・IP 範囲以外の例外・複雑なメールの引用部など)は別途追加処理をしてください。


1 日本向け電話番号(多形式対応・拡張)

  • パターン(括弧・ハイフン・空白・ピリオド・ext を許容)
r"(?x)\b(?:\(?0\d{1,4}\)?[ \-–.]*)?\d{1,4}(?:[ \-–.]*\d{1,4})*(?:[ \-–.]*(?:ext|ext\.|x)\s*\d{1,5})?\b"
Python

2 日本の携帯電話(090/080/070/050、ハイフン任意)

r"\b(?:0(?:70|80|90)|050)[ \-–.]?\d{4}[ \-–.]?\d{4}\b"
Python

3 国際 E.164(+国番号、数字のみ、最大15桁)

r"\+[1-9]\d{1,14}\b"
Python

4 国際表記(区切りあり/内線許容・柔軟)

r"(?x)\b\+?[0-9]{1,3}[ \-.\(]*\d{1,4}[ \-.\)]*(?:\d{1,4}[ \-.\)]*)+(?:[ \-.,]*(?:ext|x|ext\.)[ \-]?\d{1,6})?\b"
Python

5 メールアドレス(IDN候補・Punycode 対応の実用版)

r"[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]+@[A-Za-z0-9\-._~%]+(?:\.[A-Za-z0-9\-._~%]+)+"
Python

6 メールアドレス(より厳密寄せ:ラベル長や先頭末尾規則を簡易チェック)

r"(?x)^[A-Za-z0-9](?:[A-Za-z0-9._%+-]{0,62}[A-Za-z0-9])?@(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,63}$"
Python

(行全体チェック向け。re.match または ^…$ と組み合わせて使用)


7 ドメイン名(ASCII + xn-- Punycode 両対応)

r"\b(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+(?:[A-Za-z]{2,63}|xn--[A-Za-z0-9-]+))\b"
Python

8 IPv4(厳密:各オクテット 0–255)

r"\b(?:(?:25[0-5]|2[0-4]\d|1?\d{1,2})\.){3}(?:25[0-5]|2[0-4]\d|1?\d{1,2})\b"
Python

9 IPv6(簡易:通常形式と :: 圧縮形式を概ね許容)

r"(?xi)\b(?:[0-9A-F]{1,4}:){7}[0-9A-F]{1,4}\b|\b(?:[0-9A-F]{1,4}:){0,7}::(?:[0-9A-F]{1,4}:){0,7}[0-9A-F]{0,4}\b"
Python

10 ISO 系日付(YYYY-MM-DD + 時刻 + タイムゾーン 任意)

r"\b(19|20)\d{2}[-/\.](0[1-9]|1[0-2])[-/\.](0[1-9]|[12]\d|3[01])(?:[Tt ]([01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?)?(?:Z|[+\-](?:[01]\d|2[0-3]):[0-5]\d)?\b"
Python

11 通貨・金額(記号任意・カンマやスペース区切り・小数部任意)

r"\b(?:¥|\$|€|EUR)?\s*[+-]?\d{1,3}(?:[,\s]\d{3})*(?:\.\d+)?\b"
Python

12 クレジットカード風(4桁グループまたは 15–16 桁)

r"\b(?:\d{4}[ \-]?){3}\d{4}\b|\b\d{15,16}\b"
Python

13 JSON風キー抽出(単純キー:英数字とアンダースコアのみ)

r'"\s*([A-Za-z0-9_]+)\s*"\s*:'
Python

14 URL(http/https、ポート・パス・クエリを簡易抽出)

r"https?://(?P<host>[^:/\s]+)(?::(?P<port>\d{1,5}))?(?P<path>/[^\s]*)?"
Python

15 Windows ファイルパス(ドライブレター + バックスラッシュ、禁止文字排除)

r"[A-Za-z]:\\(?:[^\\/:*?\"<>|\r\n]+\\)*[^\\/:*?\"<>|\r\n]*"
Python

16 英単語(単語境界)

r"\b[a-zA-Z]+\b"
Python

17 日本語語句(ひらがな・カタカナ・漢字の連続)

r"[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF]+"
Python

18 浮動小数点(符号・指数表記含む簡易)

r"[+-]?(?:\d+\.\d*|\.\d+|\d+)(?:[eE][+-]?\d+)?"
Python

19 カンマ区切り金額(例 1,234,567)

r"\b\d{1,3}(?:,\d{3})*\b"
Python

20 前方参照例(”ID:” に続く数字のみを抽出)

r"(?<=ID:)\d+"
Python

使い方メモ(簡単):

  • 常に生文字列で書く: pattern = re.compile(r”…”)
  • 行全体検証するときは ^…$ を使う(例:6 のメール厳密化)
  • 大文字小文字無視は flags=re.I、複雑化して読みやすくするなら re.VERBOSE を使う

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました