pythonの正規表現モジュール

pythonは、正規表現が組み込みではなく、モジュール化されているのですが、その関係がちょっとややこしい。
http://rakunet.org/TSNET/TSpython/14/427.html
ちょっと調べただけで、regex, pcre, sre, reという4つのモジュールが出てきて、基本的にreを使うみたいなのだけれど、reとpcreは違うみたい。なんか、上のスレッドでは、pcreはobsoleteではないかという話になっているけど・・・

      • -

とりあえず、ネストした括弧にマッチできるように、下のような正規表現を書いたのだけれど、reモジュールではコンパイルできない。

p = re.compile(r"""
  (?P<pn>
    \(
    (  (?:[^()]+)
      |(?P=pn)
    )*
    \))
""",re.X);
      • -

preモジュールを見つけた。deprecateだと怒られるが、使えるようだ。下のコードのコンパイルが通った

p = pre.compile(r"""
  (?P<pn>
    \(
    (  (?:[^()]+)
      |(?P=pn)
    )*
    \))
""",pre.X);