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

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

正規表現では、特殊な形式を表したり、特殊な文字の特別な意味を呼び出さずに その特殊な文字を使うことができるようにするために、バックスラッシュ文字 ("`\`") を使います。このことは、Python の、文字列リテラルの 同一文字は同一目的で使用するということと矛盾します；例えば、 文字通りのバックスラッシュとマッチするには、パターン文字列として `'\\\\'` と書かなければなりません、というのは、正規表現は "`\\`" でなければならず、各バックスラッシュは、正規な Python 文字列リテラル内では "`\\`" と表現しなければならないからです。

これは、正規表現パターンに Python の raw string 記法を使うことで 解決されます；"`r`"を前に付けた文字列リテラル内では、 バックスラッシュは、特別な風には全く処理されません。ですから、 `r"\n"` は "`\`" と "`n`"を含む2文字の文字列であり、 一方 `"\n"` は、改行を含む一文字文字列です。 Python コード中では、パターンは、 ふつう、この raw string 記法を使って表現されます。

参考資料:

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