Python: Изящный способ проверить, соответствует ли по крайней мере один regex в списке строке

У меня есть список regexes в Python и строка. Существует ли изящный способ проверить, соответствует ли по крайней мере один regex в списке строке? Изящным я имею в виду что-то лучше, чем просто цикличное выполнение через все regexes и проверку их против строки и остановки, если соответствие найдено.

В основном у меня был этот код:

list = ['something','another','thing','hello']
string = 'hi'
if string in list:
  pass # do something
else:
  pass # do something else

Теперь я хотел бы иметь некоторые регулярные выражения в списке, а не просто представляю в виде строки, и я задаюсь вопросом, существует ли изящное решение проверить на соответствие для замены if string in list:.

Заранее спасибо.

52
задан Alan Moore 14 June 2010 в 12:43
поделиться

2 ответа

import re

regexes = [
    "foo.*",
    "bar.*",
    "qu*x"
    ]

# Make a regex that matches if any of our regexes match.
combined = "(" + ")|(".join(regexes) + ")"

if re.match(combined, mystring):
    print "Some regex matched!"
84
ответ дан 7 November 2019 в 08:59
поделиться
import re

regexes = [
    # your regexes here
    re.compile('hi'),
#    re.compile(...),
#    re.compile(...),
#    re.compile(...),
]

mystring = 'hi'

if any(regex.match(mystring) for regex in regexes):
    print 'Some regex matched!'
89
ответ дан 7 November 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: