【问题标题】:Using tr1::regex_search to match a big list of strings使用 tr1::regex_search 匹配一大串字符串
【发布时间】:2013-03-19 15:16:17
【问题描述】:

我需要匹配任何字符串列表,我想知道是否可以只使用类似于"item1|item2|item3|..." 的正则表达式,而不是为每个字符串单独使用strstr()。但该列表可能相当大 - 最多 10000 个项目。正则表达式能很好地解决这个问题吗?会比单独搜索每个字符串更快吗?

【问题讨论】:

  • 小心,因为不是每个编译器都有<regex> 的工作实现。 AFAIK,GCC only has partial support.
  • 我不知道。我想我可以在 GCC 上使用 boost::regex 吗?
  • 是的,但很遗憾,它不是即插即用的替代品。

标签: c++ regex tr1


【解决方案1】:

正则表达式会起作用,而且肯定比搜索每个字符串要快。虽然我不确定考虑到 10000 个输入模式,初始设置会占用多少内存或时间。

但是,这是一个众所周知的问题,并且有很多具体的算法,例如:

和其他几个。它们都有不同的取舍,所以选择你的毒药。

在我们的项目中,我们需要多重替换解决方案,因此我们选择了 Aho-Corasick 算法并在此基础上构建了替换函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多