在给定大量关键模式的情况下,在字符串中查找所有最长匹配的最快方法是什么?

时间:2018-04-30 06:28:52

标签: python string pattern-matching string-matching

我有一组模式(子串),我需要找出任何给定字符串中的所有最长匹配。现在我只能想到一个正则表达式的方法,其中模式按长度反向排序然后连接:

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)

但我认为这种方法有点原始,随着模式集的大小增加,它应该花费更多的时间。我想知道是否有更好的方法。这种任务通常如何在工业中完成?

1 个答案:

答案 0 :(得分:0)

通过使用有限状态机,查看rure,它比Python的内置正则表达式引擎更优化交替(|)。