正则表达式
标准库的re模块支持正则表达式
正则表达式时包含文本和特殊字符的字符串
择一匹配符号匹配多个正则表达式模式:|
匹配任意单个字符:.
从字符串起始或结尾或单词边界匹配:开始(^),结束($),一个单词的起始部分(\b),一个单词中间的模式(\B)
创建字符集:[]
限定范围和否定:指定一个字符的范围(-)
闭包操作符实现存在性和频数匹配:匹配其左边的正则表达式出现0次或多次的情况(*),匹配一次或多次出现的正则表达式(+),匹配0次或一次出现的正则表达式(?)
精确匹配前面的正则表达式N次或M-N次({N},{M,N})
表示字符集的特殊字符:匹配任何十进制数字(\d),全部字母数字的字符集[A-Za-z0-9],空格字符(\s),任何非十进制数(\D)
使用圆括号指定分组:对正则表达式进行分组,匹配子组
扩展表示法:?
compile()函数编译正则表达式
group()返回整个匹配对象或返回特定子组
groups()返回一个包含唯一或者全部子组的元组
match()函数试图从字符串的起始部分对模式进行匹配,匹配成功就返回一个匹配对象,匹配失败,返回None
m = re.match('foo','foo') #模式匹配字符串
if m is not None:#匹配成功,输出字符串
print(m.group())
search()会用它的字符串参数,在任意位置对给定正则表达式模式搜索第一次出现的匹配情况
重复、特殊字符以及分组
group()通常用于以普通方式显示所有的匹配部分,但也能用于获取哥哥匹配的子组,可以使用groups()方法来获取一个包含所有匹配子字符串的元组
m=re.match('(\w\w\w)-(\d\d\d)','abc-123')
匹配出两个元组
使用findall()和finditer()查找每一次出现的位置
findall()查询字符串中某个正则表达式模式全部的非重复出现情况,返回一个列表
使用sub()和subn()搜索和替换
将字符串中多有匹配正则表达式的部分进行某种形式的替换
subn()还返回一个表示替换的总数,替换后的字符串和表示替换总数的数字一起作为一个拥有两个元素的元组返回
split()分割字符串
可以分割出有空格的字符串