1 / 7
文档名称:

Python正则表达式模块re讲解.docx

格式:docx   大小:21KB   页数:7页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python正则表达式模块re讲解.docx

上传人:碎碎念的折木 2022/6/13 文件大小:21 KB

下载得到文件列表

Python正则表达式模块re讲解.docx

文档介绍

文档介绍:
re 模块的基本函数
在上面的说明中,我们已经对re 模块的基本函数‘findall’很熟悉了。当然如果光有findall的话,很多功能是不能实现的。下面开始介绍一下 re 模块其它的常用基本函数。灵活搭配使用这些函数,才能充分发
match 与 search
match( rule , targetString [,flag] ) search( rule , targetString [,flag] )
(注:re 的 match 与 search 函数同 compile 过的 Pattern 对象的 match 与 search 函数的参数是不一样的。Pattern 对象的 match 与 search 函数更为强大,是真正最常用的函数)
按照规则在目标字符串中进行匹配。
第一个参数是正则规则,第二个是目标字符串,第三个是选项(同 compile 函数的选项) 返回:若成功返回一个 Match 对象,失败无返回
findall 虽然很直观,但是在进行更复杂的操作时,就有些力不从心了。此时更多的使用的是 match 和 search 函数。他们的参数和 findall 是一样的,都是:
match( rule , targetString [,flag] ) search( rule , targetString [,flag] )
不过它们的返回不是一个简单的字符串列表,而是一个 MatchObject(如果匹配成功的话).。通过操作这个 matchObject,我们可以得到更多的信息。
需要注意的是,如果匹配不成功,它们则返回一个 NoneType。所以在对匹配完的结果进行操作之前,你必需先判断一下是否匹配成功了,比如:
>>> m=( rule , target )
>>> if m: #必需先判断是否成功doSomethin

这两个函数唯一的区别是:match 从字符串的开头开始匹配,如果开头位置没有匹配成功, 就算失败了;而 search 会跳过开头,继续向后寻找是否有匹配的字符串。针对不同的需要,可以灵活使用这两个函数。
关于 match 返回的 MatchObject 如果使用的问题,是 Python 正则式的精髓所在,它与组的使用密切相关。我将在下一部分详细讲解,这里只举个最简单的例子:
例:
>>> s= 'Tom:9527 , Sharry:0003'
>>> m=( r'(?P<name>\w+):(?P<num>\d+)' , s )
>>> () 'Tom:9527'
>>> () ('Tom', '9527')
>>> (‘name’) 'Tom'
>>> (‘num’) '9527'
finditer
finditer( rule , target [,flag] )
参数同 findall
返回一个迭代器
finditer 函数和 findall 函数的区别是,findall 返回所有匹配的字符串,并存为一个列表, 而 finditer 则并不直接返回这些字符串,而是返回一个迭代器。关于迭代器,解释起来有点复杂,还是看看例子把: