0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】正規表現とraw文字列リテラルの基礎まとめ

Last updated at Posted at 2025-04-29

Pythonで文字列を検索したり、一部を取り出したりしたいときに便利なのが正規表現です。
ただ、正規表現にはバックスラッシュ(\)を使った特殊な記号が多く、
Pythonの文字列のルールと混ざって混乱することもあります。

この記事では、Pythonにおける正規表現の基本と、raw文字列リテラルの必要性についてわかりやすくまとめます。

正規表現とは?

正規表現(Regular Expression)とは、文字列のパターンを表現する方法です。

特定の形式にマッチする文字列を探したり、置き換えたりするのに使います。

よく使われる正規表現パターンを紹介します。

パターン 意味
\d 数字1文字 09
\w 英数字またはアンダースコア a, Z, 0, _
\s 空白文字(スペース・タブ・改行) 空白
. 任意の1文字 何でも1文字
* 直前のパターンが0回以上繰り返される "a*""""a", "aa"などにマッチ
+ 直前のパターンが1回以上繰り返される "a+""a", "aa"などにマッチ
[] 文字クラス(いずれか1文字) [abc]a,b,cのどれかにマッチ
() グループ化 (abc)で1つの単位として扱う

これらを組み合わせることで、複雑な文字列パターンを簡単に扱えるようになります。

Pythonで正規表現を使うには?

Pythonでは標準ライブラリreモジュールを使って正規表現を扱います。

簡単な例を見てみましょう。

import re

pattern = r"\d{3}-\d{4}"
text = "郵便番号は123-4567です。"

result = re.search(pattern, text)
if result:
    print(result.group())

出力:

123-4567

このコードは「3桁の数字-4桁の数字」(例:123-4567)というパターンを探して、最初に見つかったものを出力しています。

ポイントは、patternを定義するときに**r"..."(raw文字列リテラル)を使っている**ことです。

なぜraw文字列リテラルが必要なのか?

正規表現では、\d\s など、バックスラッシュを使った記号がたくさん登場します。

もし普通の文字列("...")で書いてしまうと、Pythonのエスケープシーケンス処理が先に働いてしまい、意図した正規表現として使えないことがあります。

例:普通の文字列で書いた場合

import re

pattern = "\d{3}-\d{4}"  # ❌ 普通の文字列
text = "郵便番号は123-4567です。"

result = re.search(pattern, text)
print(result)

出力:

None

\d の部分が正しく認識されず、パターンマッチングに失敗してしまっています。

これを防ぐために、raw文字列リテラル(r"...")を使うのが基本です。

import re

pattern = r"\d{3}-\d{4}"  # ✅ raw文字列
text = "郵便番号は123-4567です。"

result = re.search(pattern, text)
print(result.group())

出力:

123-4567

raw文字列リテラルを使うことで、バックスラッシュがそのまま渡され、正規表現エンジンが正しく解釈できるようになります。

正規表現では常にraw文字列を使うべき?

Pythonの公式ドキュメントでも推奨されているように、Pythonで正規表現を書くときは基本的にraw文字列リテラルを使うべきです。

たとえ今すぐに問題が起きなくても、将来パターンを複雑にしたときにバグを防ぐためにも、習慣化しておくことが大切です。

# 正規表現は必ず raw で書く習慣を!
pattern = r"\w+@\w+\.\w+"

このように書くと、メールアドレスなどのパターンも安全に扱うことができます。

raw文字列リテラルの注意点(正規表現版)

  • raw文字列リテラルでもクォート("')は通常通り扱う必要がある
  • 最後にバックスラッシュだけ置くとエラーになる(これは正規表現に限らず)
  • r"..."r"..." のように r を2回連続して書くことはできない
  • 複雑なパターンでも、rを付けるだけでエスケープミスが防げる

まとめ

  • 正規表現は文字列のパターンを表現するための強力な仕組み
  • Pythonで正規表現を書くときは、バックスラッシュを多用するためraw文字列リテラル(r"...")を使うのが基本
  • 普通の文字列で書くとPython側のエスケープ処理が邪魔をしてうまくいかないことがある
  • バグを防ぐためにも、正規表現を書くときは常にr"..."を付ける習慣をつける
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?