2017-08-29 85 views
0

我有,有一個重複模式輸出蟒蛇比賽感嘆號mutiline

!----------------------------------------------------------------- 
line 1 
line 2 
line 3 
..... 
-------------------------------------------------------------------! 

我想匹配和提取這些塊的所有事件,而是下面的返回所有文件的文件

match = re.search(r'\!-.*-\!', data, re.DOTALL) 
print match.group() 
+0

嘗試把一個問號'*'後: '!?!\ - * - \' 的r'。另外,我不知道爲什麼有必要避開感嘆號,據我所知他們在正則表達式中沒有特殊功能。 – L3viathan

+0

@ L3viathan即使這樣也行不通......我仍然在組(0)和組(0)上獲得整個文件。 –

+0

確保使用're.DOTALL'標誌,如HonzaZíka的答案所示。 [工作模式演示](https://regex101.com/r/zlGpBt/1) – L3viathan

回答

0

默認情況下,Python中的正則表達式是貪婪的,這意味着*將消耗盡可能多的字符。您可以通過使用*?關閉貪婪:

match = re.search(r'\!-.*?-\!', data, re.DOTALL)