这可能是一个奇怪的问题,但它让我感到困惑,长期以来一直要问。为简单起见,假设有一个特定的代码部分,我必须根据给定的字符串选择要执行的函数。使用正则表达式可能如下所示:
if re.match(string, pattern1):
foo(string)
elif re.match(string, pattern2):
bar(string)
但它让我思考。如果字符串匹配pattern1和pattern2,该怎么办?有没有办法确定哪种模式更适合字符串。例如:
www\.(?P<subdmain>[a-z]*)\.(?P<site>[a-z]*)\.com
和
www\.api\.(?P<site>[a-z]*)\.com
两个匹配url:
www.api.awesomesite.com
但第二个更具特色。有没有办法选择正确的代码块来执行。请注意,这不是一个我无法解决的问题,只需按正确的顺序放置正则表达式(我可能会:))但这些是在yaml文件中配置的,可能有很多。我确信有人最终会犯错误。我想拯救那个笨蛋一个痛苦的时刻(可能未来我:) :)任何建议?