1. 程式人生 > >正則表示式之re模組compile()

正則表示式之re模組compile()

定義: 

compile(pattern[,flags] ) 根據包含正則表示式的字串建立模式物件。

compile(pattern, flags=0) 

通過help可以看到compile方法的介紹,返回一個pattern物件,但是卻沒有對第二個引數flags進行介紹。第二個引數flags是匹配模式,可以使用按位或’|’表示同時生效,也可以在正則表示式字串中指定。Pattern物件是不能直接例項化的,只能通過compile方法得到。匹配模式有: 
1).re.I(re.IGNORECASE): 忽略大小寫 
2).re.M(MULTILINE): 多行模式,改變’^’和’$’的行為 
3).re.S(DOTALL): 點任意匹配模式,改變’.’的行為 
4)

.re.L(LOCALE): 使預定字元類 \w \W \b \B \s \S 取決於當前區域設定 
5).re.U(UNICODE): 使預定字元類 \w \W \b \B \s \S \d \D 取決於unicode定義的字元屬性 
6).re.X(VERBOSE): 詳細模式。這個模式下正則表示式可以是多行,忽略空白字元,並可以加入註釋

例如: 
pattern1 = re.compile(r”“”\d + #整數部分 
. #小數點 
\d * #小數部分”“”, re.X) 
這裡正則表示式為三個”號引起來的多行字串,則將匹配模式設定為re.X 可以多行匹配。

函式re.compile將正則表示式(以字串書寫的)轉換為模式物件,可以實現更加有效的匹配。例子:
import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
re.findall(r'\w*oo\w*', text)    #查詢所有包含'oo'的單詞
  • 1
  • 2
  • 3
  • 4
  • 5

使用compile函式: 
匯入re模組: 
import re 
text = “JGood is a handsome boy, he is cool, clever, and so on…” 
regex = re.compile(r’\w*oo\w*’) 
print regex.findall(text) #查詢所有包含’oo’的單詞