使用正则表达式隔离长标题的相关部分

时间:2019-03-20 02:26:01

标签: python regex string 3d render

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

2 个答案:

答案 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'

这有效地捕获了第一个冒号+空格:之后的所有内容,并捕获了非空白字符的前两个部分。