2013-05-29 16 views

回答

5

以下應該工作,假設你有一個名爲text的字符串:

import re 
data = re.search(r'.*:([^:]*):', text, re.DOTALL).group(1) 

貪婪.*在正則表達式開始時確保您的匹配將從最後的:開始,以滿足您的「從文件末尾」的要求。 re.DOTALL標誌在那裏,因此.*也可以匹配換行符。

正則表達式的:([^:]*):部分是在那裏你會真正匹配「IWantWhatIsInHere」,[^:]*的意思是「匹配任何數量的不:人物」,和括號將匹配保存到一個捕獲組。

當我們找到匹配後,我們將其稱爲group(1)以獲取第一個捕獲組的內容,這將是您想要的數據。

+0

這很好用,謝謝。我可以問一下正則表達式的含義嗎? – Joren

+2

'r'在一個字符串之前意味着它是一個「原始字符串」。這可以防止諸如「\ n」這樣的轉義序列被轉換成其他東西。如果你使用'print r'\ n',它會打印一個反斜槓和一個'n'而不是僅僅打印一個換行符。因爲你經常需要的所有'''',所以使用原始字符串作爲正則表達式是一個好習慣 –

0

這工作:

>>> tgt='''\ 
... something that uses a colon: 
... 
... something else that uses a colon: 
... 
... :IWantWhatIsInHere: 
... 
... something 
... 
... something''' 
>>> re.search(r':([^:]*):[^:]*$',tgt,re.DOTALL).group(1) 
'IWantWhatIsInHere' 

works與線錨結束。

相關問題