Um zu betonen, möchte ich nicht "parse mit einem Regex" - Ich möchte "eine Regex in einen symbolischen Baum zu analysieren." (Suche hat nur die ehemalige herauf gebracht ...)Python-Bibliothek, um Regex in AST zu analysieren?
Mein Anwendungsfall: Um eine Regex-Suche über eine Datenbank zu beschleunigen, würde ich gerne einen Regex wie (foo|bar)baz+(bat)*
analysieren und alle Teilstrings herausziehen, die in einem erscheinen müssen Spiel. (In diesem Fall ist es nur baz
, weil foo/bar sind Alternationen und bat kann 0 mal erscheinen.)
Um dies zu tun, brauche ich ein gewisses Verständnis von Regex-Operatoren/Semantik. re.DEBUG
am nächsten kommt:
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
Allerdings ist es den Ausdruck nur, und die c-Implementierung erhält nicht die Struktur danach soweit ich das beurteilen kann. Irgendwelche Ideen, wie ich das analysieren kann, ohne meinen Parser zu schreiben?
wie über einen regulären Ausdruck über die regeg mit Muster? – Netwave
@DanielSanchez Sie können keine regulären Ausdrücke mit einem regulären Ausdruck analysieren. – BlackJack
@BlackJack, Sie können die Regex-Zeichenfolge regex, ich meine, wenn ich "1 | 2" für meine Regex haben y kann diese Zeichenfolge regex. – Netwave