python-re模块详解

安全工具 2017-12-03

re模块所包含的所有函数如下图:

1.jpg

compile

功能介绍

根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。可以提高正则的匹配速度,重复利用正则表达式对象。

用法介绍

函数原型:re.compile(pattern[, flag])

参数解释:pattern为要编译的正则表达式,flag为前文图中的标志位。

flag不同值对应的解释如下图:

2.jpg

例子

匹配字符串Myh0St所有字符,不忽略大小写与忽略大小写的区别

3.jpg

后面的例子我们将都是用这个函数来编译正则,所以后面的函数原型都是基于这个来展示。

match

功能介绍

用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。

用法介绍

函数原型:match(string[, pos[, endpos]])

参数解释:string为匹配用的原始字符串,pos为文本中正则表达式开始搜索的索引,endpos文本中正则表达式结束搜索的索引

使用match函数成功后会返回一个对象,该对象包含一下功能:

group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0);

start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;

end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;

span([group]) 方法返回 (start(group), end(group))。

例子

匹配myh0st中的字符以及从索引3和4开始匹配

4.jpg

search

功能介绍

用于查找字符串的任何位置,它也是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。

用法介绍

函数原型:search(string[, pos[, endpos]])

参数解释:string为匹配用的原始字符串,pos为文本中正则表达式开始搜索的索引,endpos文本中正则表达式结束搜索的索引

如果匹配成功返回一个match对象,如果不成功则返回None

例子

搜索myh0st1中的数字

5.jpg

findall

功能介绍

上面的 match 和 search 方法都是一次匹配,只要找到了一个匹配的结果就返回。然而,在大多数时候,我们需要搜索整个字符串,获得所有匹配的结果。

用法介绍

函数原型:findall(string[, pos[, endpos]])

参数解释:string为匹配用的原始字符串,pos为文本中正则表达式开始搜索的索引,endpos文本中正则表达式结束搜索的索引

findall 以列表形式返回全部能匹配的子串,如果没有匹配,则返回一个空列表。

例子

搜索myh0st234myh0st中的所有数字

6.jpg

finditer

功能介绍

finditer 方法的行为跟 findall 的行为类似,也是搜索整个字符串,获得所有匹配的结果。但它返回的是一个match的对象。

用法介绍

函数原型:finditer(string[, pos[, endpos]])

参数解释:string为匹配用的原始字符串,pos为文本中正则表达式开始搜索的索引,endpos文本中正则表达式结束搜索的索引

finditer返回一个顺序访问每一个匹配结果(Match 对象)的迭代器。

例子

搜索myh0st234myh0st中的所有数字

7.jpg

split

功能介绍

split 方法按照能够匹配的子串将字符串分割后返回列表

用法介绍

函数原型:split(string[, maxsplit])

参数解释:string为匹配用的原始字符串,maxsplit 用于指定最大分割次数,不指定将全部分割。

split 以列表形式返回全部能匹配的子串,如果没有匹配,则返回一个空列表。

例子

以数字串分割myh0st234myh0st

8.jpg

sub

功能介绍

sub 方法用于使用正则替换字符串中符合条件的字符。

用法介绍

函数原型:sub(repl, string[, count])

参数解释:repl可以是字符串也可以是函数,string为匹配用的原始字符串, count 用于指定最多替换次数,不指定时全部替换。

如果 repl 是字符串,则会使用 repl 去替换字符串每一个匹配的子串,并返回替换后的字符串,另外,repl 还可以使用 id 的形式来引用分组,但不能使用编号 0;

如果 repl 是函数,这个方法应当只接受一个参数(Match 对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。

sub函数返回替换后的字符串。

例子

用mm替换myh0st234myh0st中的数字串或者用test函数替换

9.jpg

subn

功能介绍

subn 方法跟 sub 方法的行为类似,也用于替换。

用法介绍

函数原型:subn(repl, string[, count])

参数与sub的参数一致

subn返回一个元组,第一个元素是使用sub方法的结果,一个是替换的次数

例子

用mm替换myh0st234myh0st中的数字串或者用test函数替换

10.jpg

在不使用compile的时候,只需要将函数前面加re.以及第一个参数为正则表达式即可,例如:re.search("d", "myh0st")


本文由 myh0st 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论