有時使用 re 模塊是個錯誤。若是你匹配一個固定的字符串或單個的字符類,而且你沒有使用 re 的任何象 IGNORECASE 標誌的功能,那麼就沒有必要使用正則表達式了。字符串有一些方法是對固定字符串進行操做的,它們一般快不少,由於它們都是一個個通過優化的 C 小循環,用以代替大的、更具通用性的正則表達式引擎。正則表達式
舉個 用一個固定字符串替換另外一個 的例子,如:你能夠把 "deed" 替換成 "word"。re.sub() 彷佛正是勝任這個工做的函數,但仍是考慮考慮 replace() 方法吧。注意 replace() 也能夠在單詞裏面進行替換,能夠把 "swordfish" 變成 "sdeedfish"。不過 RE 也是能夠作到的。(爲了不替換單詞的一部分,模式將寫成 \bword\b,這是爲了要求 "word" 兩邊有一個單詞邊界。這是個超出 replace 能力的工做)。函數
另外一個常見任務是從一個字符串中刪除單個字符或用另外一個字符來替代它。你也許能夠用 re.sub('\n',' ', s) 這樣來實現,但 translate() 可以實現這兩個任務,並且比任何正則表達式操做起來更快。 (translate 須要配合 string.maketrans 使用。例如:import string 後 'a1b3'.translate(string.maketrans('ab', 'cd')) )優化