# 2 `re` -- 正規表現操作

このモジュールでは、Perl で見られるものと同様な正規表現マッチング操作 を提供しています。正規表現のパターン文字列にはヌルバイトを含められませ んが、`\number` 記法を使えばヌルバイトを指定できます。 パターンと検索対象文字列の両方について、 8 ビット文字列と Unicode 文字 列を同じように扱えます。`re` モジュールはいつでも利用できます。

正規表現では、特殊な形式を表したり、特殊文字の持つ特別な意味を呼び出さ ずにその特殊な文字を使えるようにするために、バックスラッシュ文字 ("`\`") を使います。こうしたバックスラッシュの使い方は、 Python の文字列リテラルにおける同じバックスラッシュ文字と衝突を起こし ます。例えば、バックスラッシュ自体にマッチさせるには、パターン文字列と して`'\\\\'` と書かなければなりません、というのも、正規表現は "`\\`" でなければならず、さらに正規な Python 文字列リテラルでは各々 のバックスラッシュを "`\\`" と表現せねばならないからです。

正規表現パターンに Python の raw string 記法を使えばこの問題を解決でき ます。"`r`"を前置した文字列リテラル内ではバックスラッシュを特 別扱いしません。従って、`"\n"` が改行一文字の入った文字列になる のに対して、`r"\n"` は "`\`" と"`n`"という二つ の文字の入った文字列になります。通常、 Python コード中では、パターンを この raw string 記法を使って表現します。

参考:

Mastering Regular Expressions 詳説 正規表現
  Jeffrey Friedl 著、O'Reilly 刊の正規表現に関する本です。この本の第2版 ではPyhonについては触れていませんが、良い正規表現パターンの書き方を非 常にくわしく説明しています。