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を学んでいると、エスケープシーケンス正規表現raw文字列リテラルという用語が出てきます。
これらはそれぞれ役割が違いますが、どれもバックスラッシュ(\)を使うため、混乱しやすいポイントです。

この記事では、エスケープシーケンスと正規表現の違い、そしてそれらを扱う際に重要なraw文字列リテラルの使い方について整理します。

エスケープシーケンスとは?

エスケープシーケンスは、Pythonの文字列リテラル内でバックスラッシュ\を使い、特殊な意味を持たせるものです。
「エスケープ」という言葉には、「通常の文字の意味を抜け出す」という意味があります。

代表例:

シーケンス 意味
\n 改行
\t タブ(空白)
\\ バックスラッシュ自身
\' シングルクォート
\" ダブルクォート

例:

print("Hello\nWorld")

出力:

Hello
World

ここで\nは、普通のnではなく「改行をする」というPython自身の文字列ルールに従っています。

正規表現とは?

正規表現は、文字列のパターンマッチングを行うための表現方法です。
こちらでも\d\wのようにバックスラッシュを使った表記が多く出てきます。

代表例:

パターン 意味
\d 数字1文字(0〜9)
\w 英数字またはアンダースコア
\s 空白文字

例:

import re

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

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

出力:

123-4567

ここでは\dが「数字1文字」を表す正規表現のルールに従っています。

エスケープシーケンスと正規表現の違いまとめ

項目 エスケープシーケンス 正規表現
属する世界 Pythonの文字列処理 正規表現エンジンのパターン処理
目的 特別な文字(改行・タブなど)を扱う 文字列パターンを指定する
\n, \t, \\ \d, \w, \s
注意点 バックスラッシュがPython側で解釈される バックスラッシュを正規表現に伝える必要あり

Pythonの文字列と正規表現では、どちらも\を使うが意味が違うため、ここが混乱の元になります。

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

問題は、Pythonの通常の文字列リテラル内ではバックスラッシュがPython自身のエスケープシーケンスとして処理されることです。

つまり、"\d"と書くと、

  • Python:「\d?そんなエスケープシーケンスは知らないな」
  • → 意図しない動作 or エラーになる

これを防ぐために、raw文字列リテラル(r"...")を使います。

raw文字列リテラルを使うと、Pythonはバックスラッシュを特別扱いせず、見たまま正規表現エンジンに渡します。

例:

import re

# 通常の文字列(失敗する例)
pattern = "\d{3}-\d{4}"  # ❌

# raw文字列(正しい例)
pattern = r"\d{3}-\d{4}"  # ✅

raw文字列を使うことで、Pythonのエスケープ問題を回避し、正規表現を正しく扱えるようになります。

raw文字列リテラルの使い方まとめ

バックスラッシュをエスケープせず「そのままの文字」として扱いたいときは、raw文字列リテラルを使う。
(例:Windowsのパスや\nを文字として表示したいとき)

print(r"C:\Users\Name\Desktop")
# 出力: C:\Users\Name\Desktop

正規表現のパターンを書くときは、必ず raw文字列リテラルを使う。
(バックスラッシュが多用されるため、Pythonの文字列処理で壊れてしまうのを防ぐ)

import re

pattern = r"\d{3}-\d{4}"
result = re.search(pattern, "郵便番号は123-4567です。")
print(result.group())
# 出力: 123-4567

まとめ

  • エスケープシーケンスは、Pythonの文字列内でバックスラッシュを使い特殊な意味を持たせる仕組み
  • 正規表現は、文字列パターンマッチングを行う方法で、こちらでもバックスラッシュを使う
  • Pythonの文字列と正規表現ではバックスラッシュの扱いが違う
  • その違いを埋めるために、raw文字列リテラル(r"...")を使うことが必須

エスケープシーケンスと正規表現の違いを正しく理解し、適切にraw文字列リテラルを使いこなして、Pythonでの文字列操作を確実なものにします!

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?