Я пытаюсь извлечь набор данных из строки, которая может соответствовать одному из трех шаблонов. У меня есть список скомпилированных регулярных выражений. Я хочу пропустить их (по порядку) и пойти с первым матчем.Сделать первый успешный матч из серии регулярных выражений
regexes = [
compiled_regex_1,
compiled_regex_2,
compiled_regex_3,
]
m = None
for reg in regexes:
m = reg.match(name)
if m: break
if not m:
print 'ARGL NOTHING MATCHES THIS!!!'
Это должно работать (еще не проверено), но оно довольно изящно. Есть ли лучший способ кипятить цикл, который ломается, когда он преуспеет или взрывается, когда он этого не делает?
Может быть что-то конкретное для re
, о котором я не знаю, что позволяет вам тестировать несколько шаблонов.
+1 для правильной, но я получил впечатление, что для-другого конструкция считается запутанным, и, несмотря на множество случаев, когда это именно то, что вы хочу, чтобы это казалось неодобрительным (но я бы хотел, чтобы его опровергли). – msw
Не знал этого. Хотя мои глаза всегда ассоциируют 'else' с' try'; он улавливает меня с помощью 'try' ...' except'. –
Я узнал о 'for..else' как минимум три раза сейчас ... И я все время забываю об этом. Это просто нехорошее именование, но оно отлично работает. Благодарю. – Oli