Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 快速模式识别_C++_Pattern Matching - Fatal编程技术网

C++ 快速模式识别

C++ 快速模式识别,c++,pattern-matching,C++,Pattern Matching,我正在从事一个项目,该项目要求我实时识别日志文件中的某些模式。该服务将在多台服务器之间进行负载平衡,并每分钟推送数TB的日志文件 最初的项目要小得多,并且没有“实时”限制,所以我用Python编写它,并使用正则表达式匹配模式 我正在把应用程序转换成C++来提高处理速度,但是我不相信正则表达式是我最快的模式识别选项。 有过快速模式识别个人经验的人(即不仅仅是谷歌解决方案)能否就他们的模式识别经验提供反馈 我发现了一些不同的用于模式识别的库,比如备件和正则表达式,但我更愿意征求经验丰富的开发人员的意

我正在从事一个项目,该项目要求我实时识别日志文件中的某些模式。该服务将在多台服务器之间进行负载平衡,并每分钟推送数TB的日志文件

最初的项目要小得多,并且没有“实时”限制,所以我用Python编写它,并使用正则表达式匹配模式

我正在把应用程序转换成C++来提高处理速度,但是我不相信正则表达式是我最快的模式识别选项。 有过快速模式识别个人经验的人(即不仅仅是谷歌解决方案)能否就他们的模式识别经验提供反馈

我发现了一些不同的用于模式识别的库,比如备件和正则表达式,但我更愿意征求经验丰富的开发人员的意见,或者是过去处理过大规模实时模式识别的人员的意见

-
旁注:我意识到这是一个广泛的问题,在提出这个问题之前,我没有介绍我所做的研究,但是我要求的是个人经验,而不是一个我在谷歌上很容易找到的解决方案。

有一些算法可以做到这一点。这篇维基文章介绍了一些比较流行的

蛮力方法是逐个字符检查模式是否匹配。如果模式中的某些位置不匹配,则递增到文本中的下一个字符。但是一些非常聪明的人,看看维基的文章,已经发现你可以使用一种算法,让你跳过前面的几个字符


有很多资料描述了这些方法,请再次查看wiki文章,与其他方法相比,我在描述这些方法方面做得很差。

如果您的应用程序调用正则表达式(即模式适合于这种表示),我不会注销正则表达式,特别是当您有多台服务器可并行执行处理时。如需了解不同regex引擎的使用经验,请参阅本页,它们并非都“慢”