正則表達式功能十分強大。

“有些人面臨一個問題時會想:‘我知道,可以用正則表達式來解決這個問題。’於是現在他們就有兩個問題了”——Jamie Zawinski

同時正則表達式很難掌握。

正則表達式的各種規則就不在此贅述了,以下介紹在python的re模塊中怎樣應用正則表達式

1. 使用re.compile

re模塊中包含一個重要函數是compile(pattern [, flags]) ,該函數根據包含的正則表達式的字符串創建模式對象。可以實現更有效率的匹配。在直接使用字符串表示的正則表達式進行search,match和findall操作時,python會將字符串轉換為正則表達式對象。而使用compile完成一次轉換之后,在每次使用模式的時候就不用重復轉換。當然,使用re.compile()函數進行轉換后,re.search(pattern, string)的調用方式就轉換為 pattern.search(string)的調用方式。

其中,后一種調用方式中,pattern是用compile創建的模式對象。如下:

>>> import re
>>> some_text = 'a,b,,,,c d'
>>> reObj = re.compile('[, ]+')
>>> reObj.split(some_text)
['a', 'b', 'c', 'd']

2.不使用re.compile

在進行search,match等操作前不適用compile函數,會導致重復使用模式時,需要對模式進行重復的轉換。降低匹配速度。而此種方法的調用方式,更為直觀。如下:

>>> import re
>>> some_text = 'a,b,,,,c d'
>>> re.split('[, ]+',some_text)
['a', 'b', 'c', 'd']