我有一组模式(子串),我需要找出任何给定字符串中的所有最长匹配。现在我只能想到一个正则表达式的方法,其中模式按长度反向排序然后连接:
import re
pattern_set = {pattern_0, pattern_1, ..., pattern_n}
pattern_list = sorted(list(pattern_set), key=len, reverse=True)
pattern = r'(%s)' % '|'.join(pattern_list)
matches = re.findall(pattern, string)
但我认为这种方法有点原始,随着模式集的大小增加,它应该花费更多的时间。我想知道是否有更好的方法。这种任务通常如何在工业中完成?