PHP:有没有办法加速使用大量正则表达式搜索大量文件?

时间:2015-03-19 19:54:34

标签: php regex

我有一系列正则表达式。如果任何正则表达式匹配,我有大量文件我想标记。现在我只用每个正则表达式搜索每个文件。

我想到可能有办法解决这个问题。构建一个树,在文件上使用一些快速预处理来确定是否使用特定的正则表达式进行搜索。例如,包含字母A的所有正则表达式都在特定分支上,如果文件不包含字母A,则不应用这些正则表达式。

有人做过这方面的工作吗?我被迫使用纯PHP处理文件,我必须遍历目录树以逐个处理每个文件。我可以控制正则表达式所在的数据结构以及它们的使用方式,但我需要正则表达式的灵活性来进行最终的模式匹配。

1 个答案:

答案 0 :(得分:1)

如果您可以将reg exp翻译成单词,可以尝试使用aho-corasick算法,例如尝试使用通配符。使用通配符的Aho-corasick非常简单。只需在通配符处拆分模式并将其添加到自动机。搜索时,您可以使用状态和输入位置来计算最长匹配前缀。