可以將正則表達(dá)式分多行寫出,每一行后面寫上注釋,這樣使復(fù)雜正則表達(dá)式具有可讀性。下面是一個(gè)匹配電話號(hào)碼的例子:
phoneRegex = re.compile(r'''( (\d{3}|\(\d{3}\))? # area code
(\s|-|\.)? # separator
\d{3} # first 3 digits
(\s|-|\.) # separator
\d{4} # last 4 digits
(\s*(ext|x|ext.)\s*\d{2,5})? # extension
)''',re.VERBOSE)
注意,后面要加上參數(shù)re.VERBOSE。
第一個(gè)參數(shù),正則表達(dá)式,寫在r'''()'''中的括號(hào)中。
可以按意義,分部分寫。一部分寫一行,后面加上注釋。執(zhí)行時(shí),注釋會(huì)被忽略。同時(shí),多余的空白也會(huì)被忽略。如果用以前的方式寫,則不小心寫的空白,可能會(huì)改變正則表達(dá)式的意義。
下面看這個(gè)正則表達(dá)式匹配實(shí)例。
>>> mo=phoneRegex.search('111-123.2345')
>>> mo.group()
'111-123.2345'
>>> mo=phoneRegex.search('(111) 123.2344')
>>> mo.group()
'(111) 123.2344'
>>> mo=phoneRegex.search('(111).123.2344')
>>> mo.group()
'(111).123.2344'
>>> mo=phoneRegex.search('(111).123.2344 ext1234')
>>> mo.group()
'(111).123.2344 ext1234'
>>> mo=phoneRegex.search('(111).123.2344 x1234')
>>> mo.group()
'(111).123.2344 x1234'
>>> mo=phoneRegex.search('(111).123.2344 ext.1234')
>>> mo.group()
'(111).123.2344 ext.1234'