需要注意的是,正则表达式实际上是一种声明式编程语言,就像 Prolog 一样:你的正则表达式是一组规则,正则表达式解释器会尝试将其与字符串匹配。在此匹配过程中,解释器会做出某些假设,并继续假设直到匹配失败,这会导致回溯。除非明确指示不要,否则正则表达式会假设“贪婪匹配”,这可能会导致大量回溯。一个一般的经验法则是,回溯越多,匹配过程就越慢。
因此,如果您试图优化程序以使其快速运行(并且您不能不用正则表达式),那么优化正则表达式以使其快速匹配至关重要。
我建议使用“The Regex Coach”之类的工具来调试正则表达式字符串。
http://weitz.de/files/regex-coach.exe(Windows 安装程序) http://weitz.de/files/regex-coach.tgz(Linux tar 存档)