re 模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re 模块相关的知识,希望对你有一定的参考价值。

re.findall() :用于从一个字符串中匹配指定的字符

In [18]: import re

In [32]: re.findall(rab, abcdabcd)     # 表示从字符串‘abcdabcd‘中匹配包含‘ab‘字符,结果以列表的形式返回
Out[32]: [ab, ab]

In [19]: re.findall(r^ab, abcdefg)     # 表示从字符串‘abcdefg‘中匹配以‘ab‘开头的字符,结果以列表的形式返回
Out[19]: [ab]

In [52]: re.findall(rab, abcdABcd, re.I)    # re.I 是一个标记,表示匹配的时候不区分大小写
Out[52]: [ab, AB]
In [
54]: re.findall(rfoo$, foo\nfoo\nfoo, re.M) # re.M 用于对每一行进行匹配,如果不加的话只会打印一个‘foo‘,也就是忽略了‘\n‘的换行作用 Out[54]: [foo, foo, foo]

re.match() :用法与 re.findall() 一致,但只匹配开头的位置,且 re.match() 返回的是一个对象,需要用 group() 方法来查看所匹配到的内容

In [32]: re.findall(rab, abcdabcd)     # findall()可以匹配到所有指定的字符
Out[32]: [ab, ab]

In [34]: m = re.match(ab, abcdabcd)    # match()只能匹配开头的字符

In [35]: m.group()
Out[35]: ab

re.search() :用法与 re.findall() 一致,但 re.findall() 会匹配所有包含的字符,而 re.search() 只匹配一个包含的字符

In [42]: re.findall(rab, abcdabcd)
Out[42]: [ab, ab]

In [43]: m = re.search(rab, abcdabcd)

In [44]: m.group()    # 同理用group()方法查看
Out[44]: ab

re.sub() :用于替换字符串

In [45]: re.sub(rab, AB, abcdabcd)               # 表示将字符串‘abcdabcd‘中的‘ab‘都替换成‘AB‘
Out[45]: ABcdABcd

In [46]: re.sub(rab, AB, abcdabcd, count=1)      # count=1 可以指定只替换一次
Out[46]: ABcdabcd

re.compile() :用于将正则表达式编译成对象,并用它们来进行匹配

In [48]: p = re.compile(rab)    # 先将要匹配的内容(即正则表达式)进行编译
 
In [49]: p.findall(abcdabcd)    # 这里就可以直接匹配,提高效率
Out[49]: [ab, ab]

In [50]: p.search(abcdabcd).group()
Out[50]: ab

In [51]: p.match(abcdabcd).group()
Out[51]: ab

 

 

 

 

 

 

    

以上是关于re 模块的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式 re模块基础

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

Python基础之re模块

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

python re模块findall()详解

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