我在搜索路径与给定正则表达式 (PCRE) 匹配的文件的程序中遇到优化问题。典型的表达可能是:
^C:\test\(a|b)\foo\bar
^C:\test\[^\\]+\foo
^C:\test\.*\foo
现在,该实现检测到常量前缀路径(“C:\test\”),仅枚举此目录并将正则表达式应用于所有路径名。
查看第一个示例,C:\test\ 中可能有一个文件夹“c”,其中包含一百万个文件。这些都不可能与正则表达式匹配,但它们仍然被枚举。因此,在枚举目录之前,我想检查是否有可能在路径中附加一些东西,以便它与正则表达式匹配。
一般来说:是否可以(有效地)决定是否可以将给定的字符串与至少一个后缀连接以匹配给定的正则表达式?
很明显,像第三个例子这样的情况是不可能优化的,但在许多其他情况下,这会节省大量的执行时间。
有任何想法吗?