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模块的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式 re模块基础

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

Python基础之re模块

如何有条件地将 C 代码片段编译到我的 Perl 模块?

python re模块findall()详解

Node.js JavaScript 片段中的跳过代码