Python使用正則

 

Python中使用正則的兩種方式

在Python中有兩隻可以使用正則表達式的方式:正則表達式

  • 直接使用re模塊中的函數
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
直接使用re模塊中的函數
  • 建立一個它編譯的正式表達式對象,而後使用對象中的方法
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"解析爲轉移字符中的退格字符性能

 

findall()

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

相關文章
相關標籤/搜索