正則表達式(re)模塊從 Python 1.5 開始加入,并且采取了 Perl 風格的正則表達式匹配模式(patterns)。在初期的 Python 版本中,正則表達式使用的是 regex 模塊,它使用的是 Emacs 風格的匹配模式。在 Python 2.5 中,regex 模塊被完全移除。
正則表達式(稱為,REs,regexes,或 regex patterns)本質上是1門小的,非常特別的嵌入到 Python 中的編程語言,在 Python 的 re 模塊中。你可使用這門小的語言來指定你想匹配的字符串的集合符合的規則;這個字符串集合可能包括英文句子,或電子郵件地址,Tex 命令,或其他你想要的東西。然后你就能夠問類型這樣的問題:“這個字符串匹配給定的模式嗎?”,或:“這個字符串中有某些部份匹配這個模式嗎”。你也能夠使用正則表達式(REs)通過量種方式來修改或分割字符串。
正則表達式模式會被編譯成1串字節碼,然后傳給1個由 C 言語寫的匹配引擎來履行。對高級用法而言,可能需要更多留意對1個給定的 RE 正則表達式引擎會如何履行,以何種方式寫出的正則表達式產生的字節碼履行更快。優化不是本文要討論的內容,由于這需要你對匹配引擎內部機制有很好的理解。
正則表達式言語非常小,且有限制,其實不是所有字符串處理的任務都能使用正則表達式完成。還有1些任務可使用正則表達式完成,但是卻很復雜。這類情況下,你還是最好寫Python 代碼來處理;雖然這些代碼處理速度比復雜的正則表達式慢,但是卻更好理解。
我們將從最簡單的正則表達式開始學起。由于正則表達式是用來處理字符串的,我們就從最多見的任務——匹配字符,開始。
大多數字母和字符都會簡單的匹配它們本身。例如,正則表達式 test 會精確的匹配字符串 test(你可以開啟大小寫不敏感模式,來使得這個 RE 也能夠匹配字符串 Test 或 TEST,這個后面會再提)。
這條規則也有例外:1些字符是特殊的元字符,它們不會匹配其本身。它們的出現表明應當匹配1些不同尋常的東西,或它們會通太重復正則表達式的其他部份或改變其他部份的意義來影響正則表達式。本文的大部份是在討論這些元字符和它們的用處。
上一篇 能在多種前端框架下使用的表格控件
下一篇 信號量與互斥鎖