Найти - Пользователи
Полная версия: Регулярное выражение - альтернативные шаблоны
Начало » Python для новичков » Регулярное выражение - альтернативные шаблоны
1
@pollo84
Добрый день!

Помогите написать регулярное выражение. Есть строки:
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')
ну и аналогично со вторым случаем.

А вот как это записать в одном выражении - не знаю …

Спасибо !
py.user.next
@pollo84
Хочу написать регулярное выражение которое:
Напиши два регулярных выражения и выбирай нужное по условию наличия слова “для”.
@pollo84
Ну это да - можно сделать… просто вроде как в регулярках можно задать логическое условие и в зависимости от его выполнения применить к строке разные шаблоны ..
py.user.next
@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)
'Панель передняя радиатора'
>>>

Но это неправильно. Любое новое условие, возникшее из текста, сломает всё регулярное выражение и его надо будет делать заново.
@pollo84
Спасибо - то что надо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB