在Python的正則表達式中,有一個參數爲re.S。它表示「.」的做用擴展到整個字符串,包括「\n」。看以下代碼:正則表達式
1 import re 2 a = '''asdfsafhellopass: 3 worldafdsf 4 '''
5 b = re.findall('hello(.*?)world',a) 6 c = re.findall('hello(.*?)world',a,re.S) 7 print 'b is ' , b 8 print 'c is ' , c
# b is []
# c is ['pass:\n\t234455\n\t']
正則表達式中,「.」的做用是匹配除「\n」之外的任何字符,也就是說,它是在一行中進行匹配。這裏的「行」是以「\n」進行區分的。a字符串有每行的末尾有一個「\n」,不過它不可見。spa
若是不使用re.S參數,則只在每一行內進行匹配,若是一行沒有,就換下一行從新開始,不會跨行。而使用re.S參數之後,正則表達式會將這個字符串做爲一個總體,將「\n」當作一個普通的字符加入到這個字符串中,在總體中進行匹配。code