Python3笔记之正则表达式re(match、search、findall三个方法的区别)

一、平台

windows7、python3.7

二、目标

了解python3正则表达式re的三个方法的用法

三、示例和结果如下

import re

a = 'abc1d2ef3y'
b = '3721a3690'
resultA = re.match('[0-9]', a)
print(resultA)
# #打印结果是None,就是没有匹配到,为什么没有匹配到呢,a中明明包含的有数字啊,因为match是从字符串的第一个字符开始匹配
# #而a这第一个字符是a,是个字母,不是0到9的任意一个数值,所以没有匹配到,返回结果是None
resultB = re.match('[0-9]', b)
print(resultB)
# #打印结果是<re.Match object; span=(0, 1), match='3'>,匹配结果是3,位置是从0开始到第1个分片截取的数值就是3。
'''
如何拿到match匹配到的结果?
'''
if resultB:
    print("正则表达是match匹配到的结果是:", resultB.group())
# #输出结果是3。 为什么要判断一下,因为如果match不到值,同时用group方法的话就会导致程序报错,所以要先判断下是否有值


resultC = re.search('[0-9]', a)
print(resultC)
# #打印结果是<re.Match object; span=(3, 4), match='1'>,这个和用match有明显的区别,索引位置是3-4
# #这是从第一个开始,没有规定说第一个必须是规则中写的0-9的任意数字,即全局匹配


resultD = re.findall('[0-9]', a)
print(resultD)
# #打印结果是['1', '2', '3'],找所有能匹配到的东西,统统拿出来,结果是个列表

测试OK