Algorithm 多扩展字符串匹配算法

Algorithm 多扩展字符串匹配算法,algorithm,text-mining,Algorithm,Text Mining,我需要为文本中的多个扩展字符串匹配实现一个算法 Extended表示存在通配符(任意数量的字符,而不是星号),例如: abc*def //matches abcdef, abcpppppdef etc. abc*def abc whatever some*string Multiple表示同时搜索多个字符串模式(而不是单独搜索每个模式),例如: abc*def //matches abcdef, abcpppppdef etc. abc*def abc whatever some*stri

我需要为文本中的多个扩展字符串匹配实现一个算法

Extended表示存在通配符(任意数量的字符,而不是星号),例如:

abc*def //matches abcdef, abcpppppdef etc.
abc*def
abc
whatever
some*string
Multiple表示同时搜索多个字符串模式(而不是单独搜索每个模式),例如:

abc*def //matches abcdef, abcpppppdef etc.
abc*def
abc
whatever
some*string
问题:

什么是可以进行多个扩展字符串匹配的快速算法

最好针对SIMD指令和多核实现进行优化。开源实现(C/C++/Python)也会很棒


谢谢

我认为从阅读以下维基百科文章开始是有意义的:。然后,您可以对实现正则表达式模式匹配的算法进行文献回顾

在实际的实现方面,有各种各样的正则表达式(regex)引擎,它们以库的形式出现,集中于一种或多种编程语言。最有可能的是,最好和最流行的选择是C/C++,其最新版本PCRE2于2015年发布。另一个C++正则表达式库在谷歌上非常流行。我建议您阅读本文中链接的另外两篇文章,了解算法、实现和基准测试的详细信息。就在最近,谷歌发布了一个线性时间版本的RE2 for Java:see以获取详细信息。最后,我遇到了一个有趣的纯C正则表达式库,它提供了太多很酷的特性,无法在这里列出。然而,你可以在网上看到他们


p.S.如果以上内容对您来说还不够,请随时访问,了解更多正则表达式引擎/库的详细信息,以及它们在多个标准中的比较。希望我的回答能有所帮助。

Aleksandr Blekh,谢谢你的回复!我希望在一个现代CPU的单核上实现至少10 Gbps的处理速度。另外,我不需要正则表达式处理,只需要多个扩展字符串匹配。从你提到的那篇文章来看,速度似乎还不错。顺便问一下,你对这些发动机有实际经验吗?根据您的经验,您能推荐什么?我想强调我对在现代CPU中严重依赖SIMD指令的算法/实现的兴趣。@Konstantin,非常欢迎您!我很高兴你喜欢我的回答。坦率地说,除了阅读有关图书馆的资料外,我对我提到的图书馆没有直接的经验——很抱歉,在这方面我帮不了什么忙。如果我对您的问题和评论有其他想法或信息,我一定会让您知道。祝你好运