[英]Regex to match anything between 2 symbols starting from the end of a file?
例如,我想要冒號之間的內容,但是我需要從頭開始進行匹配,因為先前的內容可能包含冒號並使內容混亂。
使用冒號的東西:
使用冒號的其他東西:
:IWantWhatIsInHere:
某物
某物
假設您有一個名為text
的字符串,那么以下代碼應該可以工作:
import re
data = re.search(r'.*:([^:]*):', text, re.DOTALL).group(1)
正則表達式開頭的貪婪.*
可確保您的匹配從最后開始:
可能,以滿足您“從文件末尾開始”的要求。 re.DOTALL
標志在那里,因此.*
也可以匹配換行符。
正則表達式的:([^:]*):
部分是您將實際匹配“ IWantWhatIsInHere”的位置, [^:]*
意思是“匹配任意數量的非:
字符,並且括號會將匹配項保存到捕獲組。
找到匹配項后,我們在其上調用group(1)
以獲取第一個捕獲組的內容,這就是您想要的數據。
這有效:
>>> tgt='''\
... something that uses a colon:
...
... something else that uses a colon:
...
... :IWantWhatIsInHere:
...
... something
...
... something'''
>>> re.search(r':([^:]*):[^:]*$',tgt,re.DOTALL).group(1)
'IWantWhatIsInHere'
它的工作原理與線錨結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.