將一些Perl代碼轉換爲python,並且我有一個在Perl中完美工作的正則表達式,但是當我將它複製到re.match
時不起作用。 Perl的線是:將Perl正則表達式轉換爲python
if !(/(\s\{\s0x[0-9A-Fa-f]*, 0x[0-9A-Fa-f]*, .*\}.*)|(.* reservations for core .*)|(.* reservedMemoryAreas.*)/)
和我的翻譯巨蟒:
if re.match('(\s\{\s0x[0-9A-Fa-f]*, 0x[0-9A-Fa-f]*, .*\}.*)|(.* reservations for core .*)|(.* reservedMemoryAreas.*)',line)is None:
,你可以看到我複製粘貼正則表達式爲re
,排除包封/
。但是,對於此行Perl的正則表達式匹配,但蟒蛇一個dosent:
{ 0x0000000097747E80, 0x40, 1, 0x0, 1, 0x0, 1, 0x0, 0, 0x0, 1, 0, "Res[0]" }, // Res[0]
是正則表達式的語法應該是完全一樣的? 任何人都可以幫助我嗎? 謝謝
發現問題 - 我使用're.match'來搜索字符串的開頭,而Perl默認使用're.search'來搜索整個字符串。如果有人發現這種情況有用,我會留下來。 – WeaselFox
發佈它作爲答案,並自我接受:) – aIKid
然後發佈它作爲答案。作爲一個側面說明,我不明白你爲什麼有時使用文字空間或'\ s' ... – HamZa