在Python中有兩隻可以使用正則表達式的方式:正則表達式
import re re_string = "{{(.*?)}}" some_string="this is a string with {{words}} enmbedded in {{curly brackets}}.." for match in re.findall(re_string, some_string): print("MATCH->", match) MATCH-> words MATCH-> curly brackets
import re re_obj = re.compile("{{.*?}}") some_string="this is a string with {{words}} enmbedded in {{curly brackets}}.." for match in re_obj.findall(some_string): print("MATCH->", match) MATCH-> {{words}} MATCH-> {{curly brackets}}
咱們能夠根據我的喜愛選擇使用其中一種正則表達式的方法,然而,使用第二種方法對性能好不少curl
In [12]: raw_pattern = r'\b[a-z]+\b' In [13]: non_raw_pattern = '\b[a-z]+\b' In [14]: some_string = 'a few little words' In [15]: re.findall(raw_pattern, some_string) Out[15]: ['a', 'few', 'little', 'words'] In [16]: re.findall(non_raw_pattern, some_string) Out[16]: []
正則表達式模式"\b"匹配單詞邊界。raw_patern匹配了在some_string中合適的單詞邊界,而non_raw_patter根本沒有任何匹配ide
raw_pattern將"\b"識別爲兩個字符,而不是解析爲轉移字符中的退格字符函數
non_raw_pattern則將"\b"解析爲轉移字符中的退格字符性能
In [19]: import re In [20]: re_obj = re.compile(r'\bt.*?e\b') In [21]: re_obj.findall("tim tame tune tint tire") Out[21]: ['tim tame', 'tune', 'tint tire']
模式沒有定義任何組,所以findall()返回一個字符串列表this
有趣的是返回列表的url