Ich habe einen Code, der das macht. Es ist nicht gut dokumentiert und es wird nicht unterstützt, aber wenn Sie interessiert sind, können Sie es gerne sehen.
Die Bibliothek heißt rxpy und das Repository ist Ссылка
Die Routine zum Parsen ist parse_pattern in Ссылка
Wenn Sie repr(...)
für das Ergebnis aufrufen, erhalten Sie eine Grafik in der "Punktsprache" - Ссылка
Sehen Sie sich die Tests beispielsweise als an Ссылка
Um zu zeigen, was ich meine, schauen wir uns den Test unter Ссылка für 'ab*c'
:
beginnt bei 0
und kann mit einem "a" übereinstimmen, um zum Status 1
zu gelangen. Von dort können Sie ein "b" zuordnen, um zum Status 2
zu gelangen, oder ein "c", um zum Status 3
zu gelangen. state 2
hat dann einen Übergang zurück zu 1
, der ein anderes "b" usw. verbrauchen kann. Es ist ein bisschen hässlich, von Hand zu lesen, aber wenn der Test fehlschlägt, wird ein kleines Diagramm auf dem Bildschirm angezeigt.
Die Bibliothek hat auch verschiedene "engines", die Strings mit diesem Graphen abgleichen (und so auch den regulären Ausdruck anpassen). aber es ist viel langsamer als die Python-Bibliothek (weil es pure Python ist).
dies wird nicht unterstützt und ist möglicherweise nicht sehr klar - sorry - aber ich denke, es ist nahe, was Sie wollen, und Sie können es gerne verwenden, wenn es nützlich ist (MPL oder LGPL-Lizenz).
Tags und Links python regex compiler-construction fsm