我正在为自定义语言编写一个 pythonic 解析器,到目前为止我有这样的东西:
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()
...
同时,我不想将给定的行与所有可能的正则表达式匹配,因为那将是一种浪费。在不丢弃我在此之前写的所有内容的情况下,是否有一种优雅的方法可以解决这个问题并使其更高效和可读?