Python, модуль re, экранирование скобок
Есть строка:
'inlet_mass_flow_pATCH1(mass_flux)inlet_mass_flow_pATCH2(mass_flux)'
Я хочу отделить 'inlet_mass_flow_pATCH1(mass_flux)' от 'inlet_mass_flow_pATCH2(mass_flux)'. Для этого использую re таким образом:
re.findall('inlet_mass_flow_.+(mass_flux)', 'inlet_mass_flow_pATCH1(mass_flux)inlet_mass_flow_pATCH2(mass_flux)')
Получаю на выходе ['mass_flux'], а хочу получить ['inlet_mass_flow_pATCH1(mass_flux)', 'inlet_mass_flow_pATCH2(mass_flux)']. Как видите, не силен в регулярных, подскажите пожалуйста, что не так делаю...
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Скобки экранируются \( и \), также нужен "ленивый" квантификатор .+? (знак вопроса после +). И паттерн сделать в виде r-строки.
import re
txt = 'inlet_mass_flow_pATCH1(mass_flux)inlet_mass_flow_pATCH2(mass_flux)'
out = re.findall(r'inlet_mass_flow_.+?\(mass_flux\)',txt)
print(*out,sep='\n')
inlet_mass_flow_pATCH1(mass_flux)
inlet_mass_flow_pATCH2(mass_flux)