例如,我想要冒号之间的内容,但我需要从最后匹配,因为前面的内容可能有冒号,会搞砸。
使用冒号的东西:
其他使用冒号的东西:
: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'
它适用于行尾锚。