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

PHP:有没有办法使用大量正则表达式来加速搜索大量文件?,php,regex,Php,Regex,我有一个正则表达式数组。如果任何正则表达式匹配,我有大量文件要标记。现在我只是用每个正则表达式搜索每个文件 我突然想到可能有一种方法,例如,构建一棵树,对文件进行一些快速的预处理,以确定是否使用特定的正则表达式进行搜索。例如,包含字母A的所有正则表达式都位于特定的分支上,如果文件不包含字母A,则不会应用这些正则表达式 有人做过这方面的工作吗?我被迫使用纯PHP处理文件,我必须遍历目录树,逐个处理每个文件。我可以控制正则表达式所在的数据结构以及它们的使用方式,但我需要正则表达式的灵活性来进行最终的

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

我突然想到可能有一种方法,例如,构建一棵树,对文件进行一些快速的预处理,以确定是否使用特定的正则表达式进行搜索。例如,包含字母A的所有正则表达式都位于特定的分支上,如果文件不包含字母A,则不会应用这些正则表达式


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

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

无法安装sphinx?您可能只需要在后台启动正则表达式,具体取决于您要对匹配项执行的操作等。此外,您是否有
grep
egrep
?一些reexp可能可以用strpos()替换这要快得多。Sphinx不支持正则表达式,我必须用PHP来实现。我知道strpos和其他字符串搜索功能更快。这就是我所说的“预处理”。我不太清楚“背景”是什么意思。这需要在PHP中完成,我没有选择fork()或生成线程等以新的方式利用硬件。