簡體   English   中英

正則表達式可以匹配從文件末尾開始的2個符號之間的任何內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM