Python | 正規表現テンプレート集(raw 文字列版)

Python
スポンサーリンク

ここでは、Pythonでよく使う 正規表現テンプレート集(raw文字列対応版) を、
初心者でも読めるように整理して紹介します。

それぞれ 実例コード付き・動作確認OK の形にしてあります。
どれも r"..."(生文字列)を使うのがポイントです。


1️⃣ メールアドレス

import re

pattern = re.compile(
    r"^[\w\.-]+@[\w\.-]+\.\w+$"
)

test = "info.example-123@mail.co.jp"
print(bool(pattern.match(test)))  # True
Python

💡 解説:

  • [\w\.-]+ … 英数字・「_」「.」「-」を含む文字列
  • @ … メールの区切り
  • \.\w+ … ドット+英数字(例: .com, .jp
  • シンプル版。RFC準拠でなくても実務でよく使われます。

2️⃣ 電話番号(日本形式)

import re

pattern = re.compile(
    r"^0\d{1,4}-\d{1,4}-\d{4}$"
)

tests = ["03-1234-5678", "090-1234-5678", "052-12-3456"]
for t in tests:
    print(t, "→", bool(pattern.match(t)))
Python

💡 解説:

  • 0\d{1,4} … 先頭が 0 で始まり、1〜4桁の市外局番など
  • - … ハイフン区切り
  • 最後は \d{4} … 固定4桁の番号
  • 携帯 (090- 系)・固定電話 (03- 系) の両方に対応。

3️⃣ 日付(YYYY-MM-DD)

import re

pattern = re.compile(
    r"^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$"
)

tests = ["2025-11-02", "2025-2-5", "1999-12-31"]
for t in tests:
    print(t, "→", bool(pattern.match(t)))
Python

💡 解説:

  • \d{4} … 4桁の西暦
  • 0[1-9]|1[0-2] … 月(01〜12)
  • 0[1-9]|[12]\d|3[01] … 日(01〜31)
  • "2025-11-02" のような ゼロ埋め形式限定

4️⃣ URL(http/https 対応)

import re

pattern = re.compile(
    r"^https?://[\w.-]+(?:\.[\w.-]+)+[/\w\-.?=&%]*$"
)

tests = [
    "https://www.example.com",
    "http://test-site.jp/path/page?x=1",
    "ftp://invalid.com"
]

for t in tests:
    print(t, "→", bool(pattern.match(t)))
Python

💡 解説:

  • https?:// … http または https
  • [\w.-]+ … ドメイン部分
  • (?:\.[\w.-]+)+ … ドット区切り(サブドメインなど)
  • 最後の [/\w\-.?=&%]* … 任意のパスやクエリ文字列
  • RFC完全準拠ではありませんが、Web開発で十分実用レベル。

5️⃣ 郵便番号(日本形式)

import re

pattern = re.compile(r"^\d{3}-\d{4}$")

tests = ["123-4567", "12-34567", "1234567"]
for t in tests:
    print(t, "→", bool(pattern.match(t)))
Python

💡 解説:

  • \d{3} … 3桁
  • - … ハイフン
  • \d{4} … 4桁
  • 「123-4567」のような形式を判定します。

6️⃣ IPv4 アドレス

import re

pattern = re.compile(
    r"^(?:\d{1,3}\.){3}\d{1,3}$"
)

tests = ["192.168.0.1", "8.8.8.8", "256.100.10.5"]
for t in tests:
    print(t, "→", bool(pattern.match(t)))
Python

💡 解説:

  • (?: ... ){3} は「このパターンを3回繰り返す」
  • \d{1,3} は数字1〜3桁
  • 形式だけチェック。値が255を超えてもTrueになります。
    → 厳密チェックしたい場合は数値変換を併用します。

7️⃣ 半角英数字のみチェック

import re

pattern = re.compile(r"^[A-Za-z0-9]+$")

print(bool(pattern.match("Hello123")))   # True
print(bool(pattern.match("こんにちは")))  # False
Python

💡 解説:

  • A-Za-z0-9 … 英小文字・英大文字・数字
  • 日本語や記号が含まれていたらマッチしません。

8️⃣ 空白や改行を除いた文字列(トリミング)

import re

text = "   Hello world!  \n"
result = re.sub(r"^\s+|\s+$", "", text)
print(f"'{result}'")  # 'Hello world!'
Python

💡 解説:

  • ^\s+ … 行頭の空白を削除
  • \s+$ … 行末の空白を削除
  • | で両方をまとめて指定。

まとめ:実務での使い分け

用途パターン例補足
メールr"^[\w\.-]+@[\w\.-]+\.\w+$"シンプル&実用的
電話r"^0\d{1,4}-\d{1,4}-\d{4}$"国内電話
日付`r”^\d{4}-(0[1-9]1[0-2])-(0[1-9]
URLr"^https?://[\w.-]+(?:\.[\w.-]+)+[/\w\-.?=&%]*$"Web用
郵便番号r"^\d{3}-\d{4}$"日本の形式
IPv4r"^(?:\d{1,3}\.){3}\d{1,3}$"構文のみ
半角英数字r"^[A-Za-z0-9]+$"パスワード初期チェックなど
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました