Использование регулярных выражений для выделения соответствующей части длинного заголовка - PullRequest
0 голосов
/ 20 марта 2019

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 ]

1 голос
/ 20 марта 2019

Предполагая, что первая часть заголовка 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'

Это эффективно захватывает все после первого двоеточия + пробел : и захватывает первые два раздела непробельных символов.

1 голос
/ 20 марта 2019

Все зависит от того, что вы можете изменить, и то, что вам нужно для привязки вашего регулярного выражения.

Лично я бы избежал регулярных выражений, если бы вы могли помочь - они просто создают много ошибок.

Попытка:

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