Вы можете использовать встроенные функции any
(или all
, если все регулярные выражения должны совпадать) и выражение Generator для прохождения через все объекты регулярных выражений.
any (regex.match(line) for regex in [regex1, regex2, regex3])
(или any(re.match(regex_str, line) for regex in [regex_str1, regex_str2, regex_str2])
, если регулярные выражения не являются предварительно скомпилированными объектами регулярных выражений, конечно)
Хотя это будет неэффективно по сравнению с объединением ваших регулярных выражений в одном выражении - если этот код критичен ко времени или процессору, вам следует вместо этого попытаться составить одно регулярное выражение, которое охватывает все ваши потребности, с использованием специального |
регулярного выражения оператор для разделения оригинальных выражений.
Простой способ объединить все регулярные выражения - использовать оператор строки «join»:
re.match("|".join([regex_str1, regex_str2, regex_str2]) , line)
Хотя объединение регулярных выражений в этой форме может привести к неверным выражениям, если в исходных выражениях уже используется оператор |
.