我需要匹配任何字符串列表,我想知道我是否可以使用类似"item1|item2|item3|..."
的正则表达式,而不是仅为每个字符串单独执行strstr()
。但列表可能相当大 - 最多10000件。正则表达式是否可以正常运行?它会比单独搜索每个字符串更快吗?
答案 0 :(得分:1)
正则表达式将起作用,肯定比搜索每个字符串更快。虽然我不确定在给定10000输入模式的情况下初始设置需要多少内存占用或时间。
然而,这是一个众所周知的问题,并且有许多特定的算法,例如:
和其他几个人。他们都有不同的权衡,所以选择你的毒药。
在我们的项目中,我们需要多个替换解决方案,因此我们选择了Aho-Corasick算法并在其上构建了替换功能。