正则表达式匹配从文件末尾开始的2个符号之间的任何内容?

时间:2013-05-29 23:59:54

标签: python regex

例如,我想要冒号之间的内容,但我需要从最后匹配,因为之前的内容可能有冒号和混乱。

使用冒号的东西:

使用冒号的其他内容:

:IWantWhatIsInHere:

东西

东西

2 个答案:

答案 0 :(得分:5)

假设您有一个名为text的字符串:

,以下内容应该有效
import re
data = re.search(r'.*:([^:]*):', text, re.DOTALL).group(1)

正则表达式开头的贪婪.*可确保您的匹配将从最后:开始,以满足您“从文件末尾”的要求。 re.DOTALL标志位于此处,以便.*也可以匹配换行符。

正则表达式的:([^:]*):部分是您实际匹配“IWantWhatIsInHere”的地方,[^:]*表示“匹配任意数量的非:字符”,括号将保存与捕获组的匹配。

在我们找到匹配后,我们在其上调用group(1)以获取第一个捕获组的内容,这将是您想要的数据。

答案 1 :(得分: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与行锚定结束。