TITLE = MANTRA (IFD & RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)
我想使用正则表达式来隔离此标题的“ mh 104_IJ_5070_FireWorks_residualSmoke_v3” 部分,但我正在努力寻找一种干净的方法。
有什么想法吗?
请使用Python 2.7
答案 0 :(得分:1)
这一切都取决于您可以更改的内容,因此需要固定正则表达式的内容。
就您个人而言,我会避免使用正则表达式,因为它们会产生很多错误。
尝试:
" ".join(str.split()[6:8])
将字符串拆分为单词,然后抓住第6个和第7个单词并将它们放回原处。
如果您真的想使用regexp
import re
r = "TITLE = (?P<title>.*): (?P<data>.*) \((?P<path>.*)\) \(Frames: (?P<frame>.*)\)"
m = re.match(r, str)
m.groupdict()
{'path': '/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty', 'frame': '1001-1151', 'data': 'mh 104_IJ_5070_Fireworks_residualSmoke_v3', 'title': 'MANTRA (IFD & RENDER)'}
答案 1 :(得分:1)
假设标题MANTRA (IFD & RENDER):
的第一部分没有变化,并且您要提取的两个部分均不包含空格字符,则以下内容应该起作用:
import re
title = "MANTRA (IFD & RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)"
substring = re.search(r": (\S+ \S+)", v).group(1)
print(substring)
收益:
'mh 104_IJ_5070_Fireworks_residualSmoke_v3'
这有效地捕获了第一个冒号+空格:
之后的所有内容,并捕获了非空白字符的前两个部分。