tengo un código que hará esto. no está bien documentado y no es compatible, pero si está interesado, puede mirarlo.
la biblioteca se llama rxpy y el repositorio es http://code.google.com/p/rxpy
la rutina que hace el análisis es parse_pattern en http://code.google.com/p/rxpy/source/browse/rxpy/src/rxpy/parser/pattern.py#871
si llama repr(...)
sobre el resultado de que se obtiene un gráfico en el "lenguaje de puntos" - https://en.wikipedia.org/wiki/DOT_language
por ejemplo, ver las pruebas como http://code.google.com/p/rxpy/source/browse/rxpy/src/rxpy/parser/_test/parser.py#47
para mostrar lo que quiero decir, vamos a ver la prueba http://code.google.com/p/rxpy/source/browse/rxpy/src/rxpy/parser/_test/parser.py#234 en el que es para 'ab*c'
:
"""digraph {
0 [label="a"]
1 [label="...*"]
2 [label="b"]
3 [label="c"]
4 [label="Match"]
0 -> 1
1 -> 2
1 -> 3
3 -> 4
2 -> 1
}"""
que comienza a las 0
que puede coincidir con una "a" para ir al estado 1
. desde allí puede hacer coincidir una "b" para ir al estado 2
o una "c" para ir al estado 3
. estado 2
luego tiene una transición de regreso a 1
que puede consumir otra "b", etc. etc. es un poco feo leer a mano, pero cuando la prueba falla, se obtiene un pequeño gráfico en la pantalla.
la biblioteca también tiene varios "motores" que coincidirán con cadenas contra este gráfico (y también lo hacen con la coincidencia de expresiones regulares). pero es mucho más lento que la biblioteca de python (porque es pura python).
esto no es compatible y puede que no sea muy claro, lo siento, pero creo que está cerca de lo que desea y puede usarlo si es útil (licencia MPL o LGPL).
De vuelta en nuestras clases de CS teóricas, sí tenemos un método para convertir expresiones regex a un FSM. Después de todo, eso es exactamente lo que tiene que hacer un motor de expresiones regulares. – Joey