Loading

Python の新しい正規表現ライブラリ

Python の新しい正規表現ライブラリがすごい

  • Perl6と.NETにしかできない(俺知っている限り)グループのなかのサブグループのデータが取れる
  • >>> m = regex.search(r"(\w{3})+", "123456789")
    
    >>> m.captures(1)
    ['123', '456', '789']
    >>> m.starts(1)
    [0, 3, 6]
    >>> m.ends(1)
    [3, 6, 9]
    >>> m.spans(1)
    [(0, 3), (3, 6), (6, 9)]
  • 長さ一定でないLookBehindができる。
  • .finditer と同様に .splititer ができる。
  • Posix character classが追加された。
  • [[:alpha:]], [[:^alpha:]]
  • マッチしたグループの名前でとれる。たぶんnamed tuple使っていると思う。
  • >>> m = regex.search(r"(?P.*?)(?P\d+)(?P.*)", "pqr123stu")
    >>> print m["before"]
    pqr
    >>> print m["num"]
    123
    >>> print m["after"]
    stu
    >>> print len(m)
    4
    >>> print m[:]
    ('pqr123stu', 'pqr', '123', 'stu')
  • \N{name} という表現ができる
  • Unicode関係の\P{name} という表現ができる。Unicode 6.0まで対応しているみたい
  • 逆方向で検索することができる
  • >>> regex.findall(r"..", "abcde")
    ['ab', 'cd']
    >>> regex.findall(r"(?r)..", "abcde")
    ['de', 'bc']
  • それ以外にもいろんな機能が追加されたそうです....

スピードも1割ぐらいは早くなったと思う。re2に勝てないけどね。

ただこういうKiller Featuresあるかぎりみんな使い続けるでしょう 。。。

詳しくは http://pypi.python.org/pypi/regex で

က်ေနာ္ဖတ္ေသာ အျခား ဘေလာ့ / ဆိုဒ္မ်ား