本章节把re模块和正则表达式结合起来讲解,原因是re模块提供了丰富的python操作正则表达式接口,而正则表达式是一种使用特殊字符和规则来描述一个字符串匹配的模式,可以用来检测字符串是不是含有某个字符或者符合某种规则。
一、正则匹配原理
这里举个例子:判断一个网址是不是python自学网的网址(www.wakey.com.cn)。
方法1:直接判断
www.wakey.com.cn == www.wakey.com.cn
方法2:这里www,com,cn是域名中常见的字符串,我们完全可以使用单独的一个字符来代替,比如www用#代替,com使用%代替,cn使用¥来代替。那么结果就是:
www.wakey.com.cn == #.wakey.%.¥
方法3:使用正则表达式来匹配,在正则中单个字母可以用'\w'代替,点可以用点本身代替,如果字母多了可以使用\w+代替,这里字母不止一个,点也不止一个,使用[]括起来再加上一个+就可以了。
www.wakey.com.cn == [\w.]+
是不是使用正则来表示一个网址很简单?当然一个网址有很多匹配方式,上面是一种演示。
二、re模块介绍
在python中为了能更好的操作正则表达式以及判断匹配结果,从而衍生出re模块,下面我们来简单演示一下使用re模块完成上面的网址匹配判断。
方法1:直接判断
import re
print(re.match('www.wakey.com.cn', 'www.wakey.com.cn'))
返回结果:
<re.Match object; span=(0, 16), match='www.wakey.com.cn'>
这里表示匹配成功,匹配上的字符是0-16
方法2:使用正则匹配(上面的方法2是我们自己定义的规则,所以不好演示)
import re
print(re.match('[\w.]+', 'www.wakey.com.cn'))
返回结果:
<re.Match object; span=(0, 16), match='www.wakey.com.cn'>
返回结果是一样的,这就是通过re的match方法来验证字符串和正则表达式的匹配结果。在本章节中我们会详细的讲解正则表达式的语法和re模块的函数接口。