2009-09-22 394 views
15

有沒有什麼辦法可以反編譯正則表達式?如何反編譯正則表達式?

+2

爲了什麼目的? Python是基於源代碼的,所以你應該總是能夠訪問原始的正則表達式。即使你試圖對某人的.pyc文件進行反向工程,反編譯Python對象代碼以獲取字符串也會更容易,而不是反編譯正則表達式。我能想到的唯一可能的用途是嘗試對酸洗的編譯正則表達式進行逆向工程... – 2009-09-22 15:13:30

+0

知道爲什麼要這樣做會很有趣? – deadcyclo 2009-09-22 17:32:38

回答

34

編譯正則表達式對象有一個「模式」屬性,它給出原始文本模式。

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

哇,太棒了,爲什麼我不能看到它,如果我做一個DIR(正則表達式)?我試圖反思,但無法找到這個屬性來自哪裏... – nabucosound 2009-09-22 16:14:46

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