2012-07-14 15 views
1

我试图从Web请求中正确提取一些cookie。 基本上我有这个字符串:蟒蛇正则表达式多个发现

str="""Cole_gal_langid=0; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_styleid=4; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_viewid=test; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_appid=gal; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_navk=common.invalidBookmark; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_trans=InvalidBookmark; Expires=Sun, 14-Jul-13 20:37:22 GMT""" 

我想删除所有“过期=太阳,7月14日 - 13二十点37分22秒格林尼治标准时间”项此字符串中。 所以这个字符串变成这样:

str="""Cole_gal_langid=0; Cole_gal_styleid=4; Cole_gal_viewid=test; Cole_gal_appid=gal; Cole_gal_navk=common.invalidBookmark; Cole_gal_trans=InvalidBookmark;""" 

我想重新使用这个的:

import re 

str="""Cole_gal_langid=0; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_styleid=4; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_viewid=test; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_appid=gal; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_navk=common.invalidBookmark; Expires=Sun, 14-Jul-13 20:37:22 GMT, Cole_gal_trans=InvalidBookmark; Expires=Sun, 14-Jul-13 20:37:22 GMT""" 

a = re.search('(Cole_gal_*.\=*)[^;]*', str) 
if a: 
    quote = "Regex found this: "+a.group(0)+"\r\n" 
    print quote 

不幸的是,我只得到一个结果,而不是全部的实际饼干

任何帮助的或建议将不胜感激。

谢谢!

+0

尼斯后。我喜欢你展示了示例输入和预期输出。 – 2012-07-14 21:15:10

回答

2

删除图案的工作多次出现为re.sub

>>> re.sub(r'Expires=.*?GMT([,;]|$)', '', s) 
'Cole_gal_langid=0; Cole_gal_styleid=4; Cole_gal_viewid=test; Cole_gal_appid=gal; Cole_gal_navk=common.invalidBookmark; Cole_gal_trans=InvalidBookmark; ' 
+0

正是我在找的东西。谢谢 ! – user1473508 2012-07-14 21:16:29

1

findall怎么样?

返回字符串中模式的所有非重叠匹配项作为字符串列表。字符串从左到右扫描,匹配按照找到的顺序返回。如果模式中存在一个或多个组,请返回组列表;如果模式有多个组,这将是一个元组列表。空结果包含在结果中,除非他们触及另一场比赛的开始。