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
这一切都取决于你可以改变什么,所以你需要锚定你的正则表达式。
我个人会避免正则表达式,如果你可以帮助它 - 他们只是创造了很多错误。
尝试:
" ".join(str.split()[6:8])
将字符串拆分为单词,然后抓住第6和第7个单词并将它们重新组合在一起。
如果你真的想使用正则表达式
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)'}
假设标题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'
这有效地抓住了第一个冒号+空格:
之后的所有内容,并捕获了非空白字符的前两部分。