要記住的是,正則表達式實際上是一種聲明式程式語言,就像 Prolog:您的正則表達式是一組規則,正則表達式直譯器會嘗試將其與字串匹配。在此匹配過程中,直譯器會做出某些假設,並持續假設,直到匹配失敗,才會導致其回溯。除非明確告知不要這樣做,否則正則表達式會假設「貪婪匹配」,這可能會導致大量回溯。一般的經驗法則是,回溯越多,匹配過程越慢。
因此,如果您嘗試優化程式以使其快速運行(並且如果您不能沒有正則表達式),那麼優化正則表達式以使其快速匹配至關重要。
我建議使用「The Regex Coach」之類的工具來除錯您的正則表達式字串。
http://weitz.de/files/regex-coach.exe (Windows 安裝程式) http://weitz.de/files/regex-coach.tgz (Linux tar 封存檔)