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

问题描述 投票:0回答:2

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

python regex string 3d render
2个回答
1
投票

这一切都取决于你可以改变什么,所以你需要锚定你的正则表达式。

我个人会避免正则表达式,如果你可以帮助它 - 他们只是创造了很多错误。

尝试:

 " ".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)'}

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'

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

© www.soinside.com 2019 - 2024. All rights reserved.