Python的正则表达式

今天看了下Python的正则表达式,觉得挺好玩的,在这里记录一下。

摘抄自http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html的一个表:

这个表上已经基本上说明了正则表达式的用法了,Python上是用re模块。

通过查看python的doc知道,正则表达式有两种方式:match和search

比如说我想写个匹配e-mail的正则表达式。

这是一个比较宽松的e-mail格式,name部分可以使用“."和”_“字符,对于@后的内容也没有过多限制,类似这个样子:

import re
email="fwindpeak.Mr@test.com.cn"
emailstr="sdf23 "+email+" dsf34.cd09//;l"

p=re.compile(r'[\w\.]+@\w+\.[\w\.]+')

m=re.match(p,email)
s=re.search(p,emailstr)

print "email:"+email
print "emailstr:"+emailstr
print "email_match:",m.group()
print "email_search:",s.group()

一些补充:

1、先说下贪婪模式与非贪婪模式

这个主要是看到了一篇文章,里面应用了比较多的”.*?",刚开始对后面加的这个“?"不是很理解,一查知道是转化为非贪婪模式。

举个例子,在一个网页中有“<div>test1</div>dsjhfjh<div>test2</div>"。

如果不加"?"正则表达式”<div>.*</div>",匹配出来的是整个“<div>test1</div>dsjhfjh<div>test2</div>"。

如果加“?",正则表达式””<div>.*?</div>",匹配出来的结果是"<div>test1</div>"

原文地址:https://www.cnblogs.com/fwindpeak/p/2890697.html