Форум сайта python.su
0
Добрый день!
Помогите написать регулярное выражение. Есть строки:
s1 = “Бампер для Toyota Corolla”
s2 = “Renault Duster (2012–) Панель передняя радиатора”
Хочу написать регулярное выражение которое:
1) извлекает если есть слово “для” - Бампер
2) а если нет слова “для” - строку после строки вида (2012–XXYY). в данном случае Панель передняя радиатора
По отдельности проблемы нет написать
re_detail = re.compile(“(?P<detail>.*)\s*для\s*”)
m = re_detail.search(s1)
if m:
print m.group('detail')
ну и аналогично со вторым случаем.
А вот как это записать в одном выражении - не знаю …
Спасибо !
Офлайн
857
@pollo84Напиши два регулярных выражения и выбирай нужное по условию наличия слова “для”.
Хочу написать регулярное выражение которое:
Отредактировано py.user.next (Май 24, 2016 13:09:04)
Офлайн
0
Ну это да - можно сделать… просто вроде как в регулярках можно задать логическое условие и в зависимости от его выполнения применить к строке разные шаблоны ..
Офлайн
857
@pollo84У тебя две абсолютно разных строки, с которыми нужно сделать две абсолютно разные вещи.
просто вроде как в регулярках можно задать логическое условие
>>> import re >>> >>> pat = r'(\S+(?= для)|(?<=\(\d{4}-\d{4}\) ).*)' >>> >>> s1 = 'Бампер для Toyota Corolla' >>> s2 = 'Renault Duster (2012-1234) Панель передняя радиатора' >>> >>> re.search(pat, s1).group(0) 'Бампер' >>> re.search(pat, s2).group(0) 'Панель передняя радиатора' >>>
Офлайн
0
Спасибо - то что надо! 
Офлайн