一、findall:匹配所有,每一项都是列表中的每一个元素
import re s = "345fjldhfFdf998jsao" ret = re.findall('\d',s) #参数:正则表达式,带匹配的字符串,flag print(ret) # 结果:['3', '4', '5', '9', '9', '8']
二、search:只匹配从左到右的第一个,得到的不是直接的 结果,而是一个变量,通过这个变量的group方法来获取结果。如果匹配不到结果不使用group方法放回一个None,使用group方法就会报错。
import re s = "345fjldhfFdf998jsao" ret = re.search('\d',s) print(ret) #返回的一个内存地址,如果匹配不到结果就返回一个None。 print(ret.group()) #得到是一个变量,需要通过group方法获取结果。结果只是从左到右的第一个数 ret = re.search('\d','fdshfFKJHFDK') print(ret) #返回一个None print(ret.group()) # 如果匹配不到结果,使用group方法就会报错
三、match:从头到开始匹配,相当于search中的正则表达式上加一个^
import re s = "345fjldhfFdf998jsao" ret = re.match('\d',s) print(ret) #结果:<_sre.SRE_Match object; span=(0, 1), match='3'>
四、字符串处理的扩展:替换、分割
1、split:分割
2、sub:替换(目标,源,新,替换次数)
3、subn:返回一个元组,第二个元素是替换的次数
五、re模块的进阶:时间/空间
1、compile:节省你使用正则表达式解决问题的时间
编译一个正则表达式,用这个结果去search,match,findall,finditer能够节省时间
2、finditer:节省你使用正则表达式解决问题的空间/内存
返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环+group的形式取值,能够节省内存。