強調するために、私は "正規表現を使って解析する"とは思っていません - "正規表現を象徴的な木に解析する" (検索は前者のみを持ち出しています...)ASTに正規表現を解析するPythonライブラリですか?
私の使用例:データベース上で正規表現検索を高速化するには、(foo|bar)baz+(bat)*
のような正規表現を解析したいと思います。一致。 (この場合は、foo/barが交互になり、batが0回出現するので、ちょうどbaz
です。)
これを行うには、正規表現の演算子/セマンティクスを理解する必要があります。
In [7]: re.compile('(foo|bar)baz+(bat)', re.DEBUG)
subpattern 1
branch
literal 102
literal 111
literal 111
or
literal 98
literal 97
literal 114
literal 98
literal 97
max_repeat 1 4294967295
literal 122
subpattern 2
literal 98
literal 97
literal 116
しかし、それだけでプリントアウトだし、C-実装は、その後私の知る限り構造を保存しない:re.DEBUG
が最も接近します。私のオーナーパーザーを書かずにこれをどのように解析できるかについてのアイデアはありますか?
方法regeg上で正規表現を使用する方法についてパターン? – Netwave
@DanielSanchez正規表現を正規表現で解析することはできません。 – BlackJack
@BlackJack、あなたはregex文字列を正規表現することができます。もし私が正規表現のために "1 | 2"を持っていれば、その文字列をregexできます。 – Netwave