2017-12-19 16 views
0

python3でICU互換のregexを実行することはできますか? はたとえば、次の正規表現は、デフォルトのPythonの正規表現ライブラリとOKではありませんが、C++のICUのlibにOK作品:PythonのICU正規表現

import re 
re.compile("(?<=(AA|BBB)12345)") 

# Result: sre_constants.error: look-behind requires fixed-width pattern 

私はpythonの上で実行したいICUの正規表現のlibのために書かれた多くのそのような正規表現を持っています。誰でもそれを行う方法やPythonの正規表現形式に自動的に移行する方法を知っていますか?

多くの感謝!

+0

使用は、PyPIの正規表現ライブラリ。確かにいくつかの違いがあります(たとえば、ブラケット式の中でPOSIX文字クラスを使用する必要があります)が、固定幅ではないワイドビヘイビアだけに興味がある場合はうまくいくでしょう。 –

+0

多くのおかげで、私はそれを試してみましょう。 – diemacht

+0

それは動作します!ありがとう! – diemacht

答えて

2

上記のコメントにWiktorによって与えられた解決策が機能します。 再現:

  1. は正規表現ライブラリをインストールします。のpythonシェルで次の正規表現
  2. を実行し、インストールPIP:
>>> import regex 
>>> r=regex.compile("(?<=(AA|BBB)12345)") 
>>> r.findall('AA12345') 
['AA'] 
>>> r.findall('BBB12345') 
['BBB'] 
>>> r.findall('CCC12345') 
[]