常用表达

时间:2012-08-25 20:59:54

标签: python regex

我在这里有这个字符串:

*TACK F\u00d6R DIN BOKNING MED RYANAIR*****\r\n------------------------------\r\n\r\nV\u00e4nligen svara inte p\u00e5 detta e-postmeddelande.****\r\n------------------------------\r\n\r\nDITT BOKNINGSNUMMER \u00c4R:* A1A1A1*****\r\n\r\nF\u00d6R ATT F\u00c5 RESA M\u00c5STE DU CHECKA IN VIA INTERNET OCH P\u00c5 FLYGPLATSEN VISA UPP\r\nDITT INTERNETBOARDINGKORT OCH GILTIG ACCEPTERAD RESEHANDLING. PASSAGERARE\r\nSOM INTE VISAR UPP ETT BOARDINGKORT P\u00c5 FLYGPLATSEN KOMMER ATT BLI\r\nDEBITERADE EN STRAFFAVGIFT F\u00d6R NY-UTSKRIFT P\u00c5 EURO40/GBP40.(varje\r\nboardingkort m\u00e5ste vara utskrivet och presenteras p\u00e5 individuella A4-ark).**\r\n**\r\n\r\nDu kan checka in via Internet fr\u00e5n 15 dagar fram till 4 timmar innan\r\nflygets schemalagda avg\u00e5ng.****\r\n\r\nRESEPLAN/KVITTO \u2013 alla tider \u00e4r lokala.****\r\n\r\nUTRESA****\r\n\r\nFr\u00e5n Milano (Bergamo) (BGY) till Stockholm Skavsta (NYO)\r\nSat, 14Aug10 Flyg FR1944 Avg\u00e5ng BGY kl 21:00 och ankomst NYO kl 23:30****\r\n\r\nPASSAGERARE****\r\n\r\n

而且,我需要在“UTRESA”和“PASSAGERARE”之间提取数据。所以我尝试了这个:

re.search(r'UTRESA (.+)PASSAGERARE',x)

由于某些原因,它没有提取数据!你能解释一下我为什么不提取数据,以及解决方案吗?谢谢:))

1 个答案:

答案 0 :(得分:6)

匹配换行符时需要使用DOTALL flag

re.search(r'UTRESA(.+)PASSAGERARE', x, re.DOTALL)

在UTRESA之后没有空间。

演示:

>>> re.search(r'UTRESA(.+)PASSAGERARE', x, re.DOTALL).groups()
('****\r\n\r\nFr\\u00e5n Milano (Bergamo) (BGY) till Stockholm Skavsta (NYO)\r\nSat, 14Aug10 Flyg FR1944 Avg\\u00e5ng BGY kl 21:00 och ankomst NYO kl 23:30****\r\n\r\n',)