2010-03-27 67 views
1

我有蟒蛇0經驗,很少有正則表達式,我試圖找出什麼 蟒蛇正則表達式的這個小片段會從HTTP響應頭還給設置Cookie項:Python的正則表達式組澄清

REGEX_COOKIE = '([A-Z]+=[^;]+;)' 
resp = urllib2.urlopen(req) 
re.search(REGEX_COOKIE, resp.info()['Set-Cookie']).group(1) 

人能給出一個Set-Cookie值的簡單的例子,說明什麼,這將匹配+回報?

問候

回答

4

Set-Cookie是名稱值對的列表,用分號分隔:

 
HTTP/1.1 200 OK 
Content-type: text/html 
Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT 

(content of page) 

的正則表達式匹配的名稱,等號,並且該值直到第一分號 - 在這種情況下:RMID=732423sdfs73242;。換句話說,它讀取第一個名稱 - 值對。請注意,如果只有一個名稱 - 值對,後面沒有分號,它將不起作用。

+0

感謝,明確的解釋。 如果我和你在一起,對於一個Set-Cookie字符串這樣的Set-Cookie:RMID = 732423sdfs73242;路徑= /;期滿=星期五,31日 - 12月2010 23點59分59秒GMT ,組(2)將匹配RMID = 732423sdfs73242;路徑= /; ? – nkr1pt 2010-03-27 20:33:26

+0

@ nkr1pt:其實不,它只會找到第一個。要找到所有名稱值對,可以使用re.findall,或者更簡單:不要打擾正則表達式,只需使用str.split(';')。 – 2010-03-27 20:40:55