我为类似文本的文件(php,python,js源)创建了简单的扫描程序,它获取了正则表达式列表并从某个目录中递归扫描所有文件/目录。
打开每个文件,读取内容(通常它不是很大 - 我看到的最大值大约是10Kb)并调用每个正则表达式方法re.sub(my_rx_N, my_replace_callback, file_content)
。
经过一些测试后,我发现我的脚本卡在某些普通文件中(即没有任何特定的问题/内容/编码),这些文件看起来就像其他文件一样。
我不知道为什么会出现,也许你有?
示例regexps:
((#)([a-zA-Z0-9]*)\2.*)?(<\?php ?(?=(.*<\?php)))?(eval|echo)(\((base64_decode|gzinflate))+\(("|')[a-zA-Z0-9+=/]+\9\)+;( ?\?>(?=(.*<\?php)))?(.*\2/\3\2)?
<\?php(.*)\n(/\*[A-Za-z0-9 .]*\*/)\1?\nob_start\(\);(\1?\n)*\2\3\?>(\1?\n)*
preg_replace\("[]/a-zA-Z[0-9*.+]*/e[a-zA-Z0-9]*"[a-zA-Z0-9"_, (\'.)+;/=?<>]*
/\*([a-zA-Z0-9]+)\*/.+[ ]*[a-zA-Z0-9/\(\)-=;"{}\[\]\\!]+.+[ ]*/\*/\1\*/
(<\?php.?(?=(.*<\?php)))?if[ ]?\(([a-zA-Z0-9]+\()?(.?[$][A-Z_]*)(\["[0-9a-z_\\]*"\])\)[){(]*eval(\(base64_decode)?\(\4(\["[0-9a-z_\\]*"\])[{})(;A-Za-z0-9]*(.?\?>(?=(.*<\?php)))?
我正在使用python 2.7。