2009-09-22 19 views
15

Czy istnieje sposób na dekompilację wyrażenia regularnego po skompilowaniu?Jak dekompilować wyrażenie regularne?

+2

Do jakiego końca? Python jest oparty na źródłach, więc zawsze powinieneś mieć dostęp do oryginalnego wyrażenia regularnego. Nawet jeśli próbujesz odtworzyć inżynierskie czyjegoś pliki .pyc, łatwiej będzie dekompilować kod obiektowy Pythona, aby uzyskać ciąg, zamiast dekompilować wyrażenie regularne. Jedynym możliwym zastosowaniem, o jakim mógłbym pomyśleć, jest próba odtworzenia skompresowanego skompilowanego regex ... –

+0

Byłoby interesujące dowiedzieć się, dlaczego chcesz to zrobić? – deadcyclo

Odpowiedz

34

Skompilowane obiekty wyrażeń regularnych mają atrybut "wzorzec", który daje oryginalny wzorzec tekstu.

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

Wow świetnie, dlaczego nie mogę go zobaczyć, jeśli robię dir (regex)? Próbowałem introspekować, ale nie mogę znaleźć miejsca, z którego pochodzi ta własność ... – nabucosound

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