2014-01-26 7 views
0

У меня есть следующая строка, Hello, season 2 (VSF), и мне нужно разобрать «2». Вот что я пытаюсь:Regex найти цифру

s = 'Hello, season 2 (VSF)' 
re.findall('Season|Saison|Staffel[\s]+\d',s) 
>>> ["Season"] 

Как бы мне получить «Сезон 2» здесь?

ответ

1

Season|Saison|Staffel следует сгруппировать. Также укажите re.IGNORECASE или re.I флаг для соответствия регистру без учета регистра.

s = 'Hello, season 2 (VSF)' 
>>> re.findall(r'(?:Season|Saison|Staffel)\s+\d+', s, flags=re.IGNORECASE) 
['season 2'] 
>>> re.findall(r'(?:Season|Saison|Staffel)\s+\d+', s) # without re.I 
[] 

Используйте группу, не связанную с захватом. В противном случае шаблон включает группу захвата, а re.findall возвращает список сопоставленной группы вместо строки соответствия.

>>> re.findall(r'(Season|Saison|Staffel)\s+\d+', s, flags=re.IGNORECASE) 
['season'] 
Смежные вопросы