re模块
Posted 0627zhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块相关的知识,希望对你有一定的参考价值。
1.re模块
a:当正则进入程序中,会引发转义字符的问题
转义字符:程序中的反斜杠有特殊意义,相当于转义,所以\\相当于翻转义;
b:关于中括号的[]一般量词进去都会现原形,[(),+,*,?,/,$,.]这些都会以本身意义表示;
而还有一个[-]如果不放在开头,就表示什么到什么,放在开头就是普通的减;
c:如果在一串字符串前加上r,表示强制转义,所有转义字符失效; 例:r‘ d‘ 输出: d
但转义字符r只在文本输入的输入的时候有用,不能对变量进行转义;
2.re模块的应用
1).findall:
a:参数:findall(pattern(正则表达式),string,flags=0)
b:返回值类型:list,而且是迭代输出,
c:返回值内容:匹配到的所有项,匹配不到,返回空列表;
2).search:
a:参数:search(pattern(正则表达式),string,flags=0)
b:返回值类型:正则匹配的对象;如果没找到,则返回None
c:返回值内容:内存地址,只匹配第一个符合规则的对象;
3).match:
a:参数:search(pattern(正则表达式),string,flags=0)
b:返回值类型:正则匹配的对象;如果没找到,则返回None
c:返回值内容:内存地址,只匹配开头是否符合规则,跟search一样,只是在search的正则表达式前加了^;
d:如果想要输出数值,需要group方法,
4)sub:
a:参数:sub(pattern, repl(要替换的值), string, count=0(替换次数), flags=0)
#几个有趣的事情 # d? 的情况替换: ret = re.sub(‘d?‘,‘M‘,‘56f‘,3) print(ret) #输出结果: MMfM ?代表0个或一个,所以它会一个一个找, 如果找不到,把原字符拿下来,但也算0次所以再加一个M # d+的情况替换: ret = re.sub(‘d+‘,‘M‘,‘56f‘,3) print(ret) #输出结果: Mf +代表一个或多个,根据贪婪法则,所以会将一组数字作为整体替换 # d*的情况替换 ret = re.sub(‘d*‘,‘M‘,‘56f‘) print(ret) #输出结果: MfM *代表0个或多个,即可以把56作为一组替换,又能不匹配值0个做添加M
#上面这三种情况如果执行subn()得到的次数依次是 (MMfM,3)(Mf,1)(MfM,2)
5)split
以上是关于re模块的主要内容,如果未能解决你的问题,请参考以下文章