Я пишу Python-анализатор для пользовательского языка, и на данный момент у меня есть что-то вроде этого:
re1 = re.compile(r"...")
re2 = re.compile(r"...")
re3 = re.compile(r"...")
re4 = re.compile(r"...")
...
...
Теперь я читаю входной файл, и для каждой строки, если я нахожу определенное ключевое слово, я использую определенное регулярное выражение. Очевидно, это превращает мою жизнь в настоящий ад, потому что я делаю что-то вроде этого:
if line.find("keyword1") >= 0
# Uses re1 to match the string
invoke_handler1()
elif line.find('keyword2") >= 0
# Uses re2 to match the string
invoke_handler2()
...
В то же время я не хочу сопоставлять данную строку со всеми возможными регулярными выражениями, потому что это было бы пустой тратой. Не отбрасывая все, что я написал до этого момента, есть ли элегантный способ решить эту проблему и сделать ее более эффективной и удобочитаемой?