我正在寻找一种将单个字符串与一组通配符字符串进行匹配的解决方案。例如
>>> match("ab", ["a*", "b*", "*", "c", "*b"])
["a*", "*", "*b"]
输出的顺序并不重要。
我将有大约 10^4 个通配符字符串进行匹配,并且我将进行大约 10^9 个匹配调用。这意味着我可能不得不像这样重写我的代码:
>>> matcher = prepare(["a*", "b*", "*", "c", "*b"]
>>> for line in lines: yield matcher.match("ab")
["a*", "*", "*b"]
我已经开始用 Python 编写一个处理通配符的 trie 实现,我只需要正确处理这些极端情况。尽管如此,我还是很想听听;你会如何解决这个问题?是否有任何 Python 库可以让我更快地解决这个问题?
到目前为止的一些见解:
- 命名 (Python, re) 正则表达式在这里对我没有帮助,因为它们只会返回一个匹配项。
- pyparsing似乎是一个很棒的库,但是文档很少,而且在我看来,它不支持匹配多个模式。