findall
findall是寻找所有能匹配到的字符,并以列表的方式返回
1.找到单个字符
import re
text = '身高:160,体重:90,年龄:20‘
print(re.findall(r'\d',text))
运行结果:
['1','6','0','9','0','2','0']
2.找到多个字符
import re
text = '身高:160,体重:90,年龄:20‘
print(re.findall(r'\d+',text))
运行结果:
['160','90','20']#可连续匹配
search
搜索功能,只返回match对象
import re
text = 'abc,ABC,aBC‘
print(re.search(r'abc+',text))
如果想从这个match对象中取出我们想要的东西,就需要调用group();如果想从这个match对象中取出匹配结果的位置,就需要调用span()获得。
a = re.search(r'abc+',text)
print(a.group()) #print结果是abc
print(a.span()) #返回左闭右开的区间,(0,3)
match
也是与search一样的搜索功能,但是match只会从字符串开头匹配,如果从起始位置没有匹配成功的话,match()就返回None。
1. 从头开始匹配到了,返回一个match对象,与search结果一样
import re
text = 'abc,ABC,aBC‘
print(re.match(r'abc+',text))
2. 从头没有匹配到,返回None
import re
text = 'Abc,abc,ABC,aBC‘
print(re.match(r'abc+',text))
3. 通过()提取内容放在数组里
import re
text = 'abc,ABC,aBC‘
a = re.match(r'a(.)c,A(.)C',text)
print(a.group()) #输出匹配的字符
print(a.groups()) #提取()中的内容,作为一个元组字符装在元组中:('b','B')
print(a.group(0)) #匹配到的完整的内容:abc,ABC
print(b.group(1)) #b
print(b.group(2)) #B
- group(0)/group():获取匹配到的完整的字符串
- group(1):获取括号括起来的第一个值
- group(2):获取括号括起来的第二个值
- groups():由所有括号括起来的值组成的元祖,相当于group(1,2)