- 正则表达式的编译---可以提高匹配效率
csvt_re = re.compile(r'csvt',re.I) #属性re.I表示忽略大小写 print(csvt_re.findall('CSvt')) #打印匹配到的['CSvt']
编译后的对象使正则表达式匹配更加灵活,对象常用的方法:
- match():决定RE是否在字符串刚开始的位置
- search():扫描字符串,找到RE匹配的位置,匹配的字符串可以是任意位置,没有的话返回None
- findall():找到RE匹配的所有子串,并作为一个列表返回
- finditer():找到RE匹配的所有子串,并作为一个迭代器返回
match()和search()匹配成功返回一个matchObject,匹配失败返回None,match Object实例方法:
group()--返回RE匹配的字符串
start()---返回匹配开始的位置
end()---返回匹配结束的位置
span()---返回一个元组包含匹配的位置
实际程序中,最常见的是使用将matchObject保存在一个变量中,然后检查变量是否为None
- re.sub():替换字符串,相比于字符串的方法replace()更加灵活
rule = r'c..t' re.sub(rule,'python','csvt crrt cfet ffff') #执行返回字符串'python python python ffff' re.subn(rule,'python','csvt crrt cfet ffff') #执行返回元组('python python python ffff',3),表示一共替换了3次
- re.split():切割字符串,相比于字符串的方法split()更加灵活
>>> re.split(r'[+-*]','123+456-789*aaa') ['123', '456', '789', 'aaa']