Per enfatizzare, non voglio "analizzare usando un'espressione regolare" - Voglio "analizzare un'espressione regolare in un albero simbolico". (La ricerca ha solo richiamato il primo ...)Libreria Python per analizzare la regex in AST?
Il mio caso d'uso: per velocizzare una ricerca regolare su un database, vorrei analizzare una espressione regolare come (foo|bar)baz+(bat)*
ed estrarre tutte le sottostringhe che DEVONO apparire in un incontro. (In questo caso, è solo baz
perché foo/bar sono alternanze e bat può apparire 0 volte.)
Per fare ciò, ho bisogno di una certa comprensione degli operatori regex/semantica. re.DEBUG
è più vicina:
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
Tuttavia, è solo la stampa, e la c-implementazione non preserva la struttura in seguito, per quanto posso dire. Qualche idea su come posso analizzarla senza scrivere il parser del mio proprietario?
come circa usando una regex sul regeg modello? – Netwave
@DanielSanchez Non è possibile analizzare espressioni regolari con un'espressione regolare. – BlackJack
@BlackJack, è possibile regex la stringa regex, voglio dire se ho "1 | 2" per la mia espressione regolare y può regex quella stringa. – Netwave