python正则-re的使用
今天在刷题的时候用到了正则,用的过程中就感觉有点不太熟练了,很久没有用正则都有点忘了。所以现在呢,我们就一起来review一下python中正则模块re的用法吧。 今天是review,所以一些基础的概念就不做介绍了,先来看正则中的修饰符以及它的功能: 修饰符
模式
上面这些呢,是我们会用到的一些模式,这里面绝大部分都是应该熟记于心的。 接下来我们看re的一些方法: re.compile这个方法会生成一个正则对象,他的第一个参数是正则字符串,第二个参数是修饰符,就是 re.I,re.S 这些。 生成的这个正则对象呢,它还有一些方法,比如match、findall、finditer、search等等,这些方法的用法请往下看。 re.matchmatch方法是从给定字符串的开头开始进行匹配,并且只匹配一次。也就是说如果字符串和正则的第一个字母就对不上那就匹配失败了。 ta的参数是pettern,string,flags
match 如果匹配失败返回None,匹配惩罚返回的则是一个match对象。 match对象有一些方法,比较常用的有:span、group、groups等等
re.searchsearch 函数和 match 函数是类似的,区别在于match方法是只在目标函数开头匹配一次;search函数是在整个目标函数上匹配一次,一次匹配成功后不再进行匹配。 同样search方法返回的也是一个match对象,用法和match方法返回的结果一样。 re.splitsplit 函数是用来分割字符串的一个函数。它的功能就是根据匹配的字符串对目标字符串进行分割,返回的结果是一个列表。 需要注意的是,如果正则中有组,组内的字符在结果列表中也会保留,不是组内的字符在结果列表中不会被保留。什么意思呢?通过一个例子来看一下: st = 'www.baidu.com www.taobao.com' result = re.split('bai(du)',st) print(result) 结果: 可以看到,字符串‘du’是被括号括起来的,所以在结果中也有‘du‘这个元素,而‘bai‘没有被括号括起来,在结果中就不会有‘bai’这个元素。 re.findall这个函数是我在爬虫项目中用的最多的一个函数了,它可以把所有匹配的结果以列表的形式返回,而不是像match和search一样只匹配一个结果。我们来试一下: st = 'www.baidu.com www.taobao.com' result = re.findall(r'www.(w*).(com)',st) print(result)
re.finditer这个函数和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') re.sub这个函数是用来替换字符串的。可以将匹配的字符串替换成指定的字符串,我们来看一下: st = 'www.111.com www.222.com' result = re.sub(r'd+','OK',st) print(result) 结果: 我们的第二个参数除了可以是一个给定的字符串还可以是一个函数: 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) 结果: 好,我们今天的review就到这里了,你掌握了吗?对于正则你还知道哪些更高级的用法呢,留言告诉我吧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |