2009-09-22 22 views
15

¿Hay alguna manera de descompilar una expresión regular una vez compilada?¿Cómo descompilar una expresión regular?

+2

¿Para qué fin? Python se basa en la fuente, por lo que siempre debe tener acceso a la expresión regular original. Incluso si intenta realizar una ingeniería inversa de los archivos .pyc de otra persona, sería más fácil descompilar el código del objeto python para obtener la cadena, en lugar de descompilar la expresión regular. El único uso posible que se me ocurre es tratar de aplicar ingeniería inversa a una expresión regular compilada en escabeche ... –

+0

Sería interesante saber por qué quieres hacer esto? – deadcyclo

Respuesta

34

Los objetos de expresión regular compilados tienen un atributo de "patrón" que proporciona el patrón de texto original.

>>> import re 
>>> regex = re.compile('foo (?:bar)*') 
>>> regex.pattern 
'foo (?:bar)*' 
+6

Wow genial, ¿por qué no puedo verlo si hago un dir (regex)? Traté de hacer una introspección, pero no puedo encontrar de dónde viene esta propiedad ... – nabucosound

8
r = re.compile('some[pattern]'); 
print r.pattern 
Cuestiones relacionadas