Python正規表現:^と$で行頭・行末にマッチさせる方法

この記事では、Pythonの正規表現で、文字列の行頭または行末といった特定の位置にパターンをマッチさせるための特殊文字、キャレット(^)ドル記号($)について解説します。これらはアンカーと呼ばれます。


目次

キャレット^:文字列の先頭にマッチ

正規表現パターンの先頭にキャレット^を置くと、そのパターンが文字列の先頭に存在する場合にのみマッチします。

import re

# "INFO:"で始まる文字列にマッチするパターン
log_pattern = re.compile(r'^INFO:')

# マッチする例
match1 = log_pattern.search("INFO: User logged in successfully.")
if match1:
    print("マッチ1: 成功")

# マッチしない例 (先頭が"INFO:"ではないため)
match2 = log_pattern.search("WARNING: INFO: User action.")
if match2 is None:
    print("マッチ2: 失敗")

実行結果:

マッチ1: 成功
マッチ2: 失敗

ドル記号$:文字列の末尾にマッチ

パターンの末尾にドル記号$を置くと、そのパターンが文字列の末尾に存在する場合にのみマッチします。

import re

# ".log"で終わる文字列にマッチするパターン
file_pattern = re.compile(r'\.log$')

# マッチする例
match1 = file_pattern.search("system_event_2025.log")
if match1:
    print("マッチ1: 成功")

# マッチしない例 (末尾が".log"ではないため)
match2 = file_pattern.search("error.log.old")
if match2 is None:
    print("マッチ2: 失敗")

実行結果:

マッチ1: 成功
マッチ2: 失敗

^$の組み合わせ:文字列全体との完全一致

^$をパターンの両端に使うと、文字列全体がそのパターンに完全に一致することを要求できます。これは、入力値のバリデーション(検証)などで非常に役立ちます。

例えば、文字列が数字のみで構成されているかを確認するパターンは r'^\d+$' となります。

  • ^: 文字列の先頭から
  • \d+: 1桁以上の数字が
  • $: 文字列の末尾まで続く
import re

# 文字列全体が1桁以上の数字であるかにマッチするパターン
numeric_pattern = re.compile(r'^\d+$')

# マッチする例
match1 = numeric_pattern.search("1234567890")
if match1:
    print("マッチ1: 成功")

# マッチしない例 (数字以外の文字が含まれる)
match2 = numeric_pattern.search("123xyz456")
if match2 is None:
    print("マッチ2: 失敗")

# マッチしない例 (空白が含まれる)
match3 = numeric_pattern.search("123 456")
if match3 is None:
    print("マッチ3: 失敗")

実行結果:

マッチ1: 成功
マッチ2: 失敗
マッチ3: 失敗

まとめ

正規表現のアンカー^$は、文字そのものではなく、文字列内の位置にマッチします。^は文字列の先頭、$は文字列の末尾にパターンを固定(アンカー)する役割を持ちます。両者を組み合わせた^...$という形式は、文字列全体のフォーマットを厳密に検証する際の基本的なテクニックです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次