code blue 第三季,冰城龙虎斗,编织毛衣
今天在刷题的时候用到了正则,用的过程中就感觉有点不太熟练了,很久没有用正则都有点忘了。所以现在呢,我们就一起来review一下python中正则模块re的用法吧。
今天是review,所以一些基础的概念就不做介绍了,先来看正则中的修饰符以及它的功能:
上面这些呢,是我们会用到的一些模式,这里面绝大部分都是应该熟记于心的。
接下来我们看re的一些方法:
这个方法会生成一个正则对象,他的第一个参数是正则字符串,第二个参数是修饰符,就是 re.i, re.s 这些。
生成的这个正则对象呢,它还有一些方法,比如match、findall、finditer、search等等,这些方法的用法请往下看。
match方法是从给定字符串的开头开始进行匹配,并且只匹配一次。也就是说如果字符串和正则的第一个字母就对不上那就匹配失败了。
ta的参数是pettern,string,flags
pettern 就是正则字符串,如果是通过re.compile方法生成的正则对象.match来调用的话,就不需要这个参数了,因为正则对象本身就代表了一个正则匹配模式。
string 就是要进行匹配的目标字符串
flags 就是正则的修饰符,比如 re.i
match 如果匹配失败返回none,匹配惩罚返回的则是一个match对象。
match对象有一些方法,比较常用的有:span、group、groups等等
search 函数和 match 函数是类似的,区别在于match方法是只在目标函数开头匹配一次;search函数是在整个目标函数上匹配一次,一次匹配成功后不再进行匹配。
同样search方法返回的也是一个match对象,用法和match方法返回的结果一样。
split 函数是用来分割字符串的一个函数。它的功能就是根据匹配的字符串对目标字符串进行分割,返回的结果是一个列表。
需要注意的是,如果正则中有组,组内的字符在结果列表中也会保留,不是组内的字符在结果列表中不会被保留。什么意思呢?通过一个例子来看一下:
st = 'www.baidu.com www.taobao.com' result = re.split('bai(du)', st) print(result)
结果:['www.', 'du', '.com www.taobao.com']
可以看到,字符串‘du’是被括号括起来的,所以在结果中也有'du'这个元素,而'bai'没有被括号括起来,在结果中就不会有‘bai’这个元素。
这个函数是我在爬虫项目中用的最多的一个函数了,它可以把所有匹配的结果以列表的形式返回,而不是像match和search一样只匹配一个结果。我们来试一下:
st = 'www.baidu.com www.taobao.com' result = re.findall(r'www\.(\w*)\.(com)', st) print(result)
[('baidu', 'com'), ('taobao', 'com')]
这个函数和findall的功能一样。不同之处在于这个函数返回的结果是一个生成器,而生成器中的每一项是一个match对象,我们一起来看一下:
st = 'www.baidu.com www.taobao.com' result = re.finditer(r'www\.(\w*)\.(com)', st) print(result.__next__().group(0, 1, 2)) print(next(result).groups(2))
('www.baidu.com', 'baidu', 'com') ('taobao', 'com')
这个函数是用来替换字符串的。可以将匹配的字符串替换成指定的字符串,我们来看一下:
st = 'www.111.com www.222.com' result = re.sub(r'\d+', 'ok', st) print(result)
结果:www.ok.com www.ok.com
我们的第二个参数除了可以是一个给定的字符串还可以是一个函数:
def took(matched): value = matched.group() return str(int(value)*2) st = 'www.111.com www.222.com' result = re.sub(r'\d+', took, st) print(result)
结果:www.222.com www.444.com
好,我们今天的review就到这里了,你掌握了吗?对于正则你还知道哪些更高级的用法呢,留言告诉我吧。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论