1. 程式人生 > >Python正則表示式中的re.S的作用

Python正則表示式中的re.S的作用

在Python的正則表示式中,有一個引數為re.S。它表示“.”(不包含外側雙引號,下同)的作用擴充套件到整個字串,包括“\n”。看如下程式碼:

複製程式碼

import re
a = '''asdfhellopass:
    123
    worldaf
    '''
b = re.findall('hello(.*?)world',a)
c = re.findall('hello(.*?)world',a,re.S)
print 'b is ' , b
print 'c is ' , c

複製程式碼

執行結果如下:

b is  []
c is  ['pass:\n\t123\n\t']

正則表示式中,“.”的作用是匹配除“\n”以外的任何字元,也就是說,它是在一行中進行匹配。這裡的“行”是以“\n”進行區分的。a字串有每行的末尾有一個“\n”,不過它不可見。

如果不使用re.S引數,則只在每一行內進行匹配,如果一行沒有,就換下一行重新開始,不會跨行。而使用re.S引數以後,正則表示式會將這個字串作為一個整體,將“\n”當做一個普通的字元加入到這個字串中,在整體中進行匹配。