博客
关于我
python之re模块详细梳理(二)
阅读量:710 次
发布时间:2019-03-16

本文共 2229 字,大约阅读时间需要 7 分钟。

sub

参数说明

re.sub(pattern, repl, string, count=0, flags=0)

patten:正则表达式。

repl:要替换的字符串。

string:要匹配的字符串。

count:替换参数,默认值0表示不限制次数,可传参指定替换次数。

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

返回值

返回值是替换后的新字符串。

用途

根据正则表达式对字符串的内容按repl参数进行替换。

案例

print(re.sub( '\d+','——', '123abc567def98ghi'))print(re.sub( '\d+','——', '123abc567def98ghi',1))out:——abc——def——ghi——abc567def98ghi

subn

参数说明

参数和sub完全一致。

返回值

返回值是一个元组,元素0是替换后的新字符串,元素1是成功替换的次数。

用途

根据正则表达式对字符串的内容按repl参数进行替换。

案例

print(re.subn( '\d+','——', '123abc567def98ghi'))str1, times = re.subn( 'ABC', '——','123abc567def98ghi')print(str1, times)out:('——abc——def——ghi', 3)123abc567def98ghi 0

finditer

参数说明

参数和findall完全一致。

返回值

从字符串开头开始匹配,一直匹配到结尾都匹配不到结果则返回None;匹配到结果则返回迭代器,迭代器的内容是re.Match对象(关于re.Match对象详细说明请查看re.search的返回值部分)。

用途

用迭代器的方式从字符串中按正则表达式查找或提取内容,优点是节省内存,缺点是取值不直观。

案例

result = re.finditer('\d+','123abc567def98')for i in result:    print(i.group())out:12356798

complie

参数说明

re.compile(pattern, flags=0)

patten:正则表达式。

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

返回值

返回的是正则表达式类(class ‘re.Pattern’)。

用途

对正则表达式进行预编译,在某个正则表达式需要多次使用时建议进行预编译,可提高运行效率。

案例

ret = re.compile('\d+')res1 = ret.search('123abc567def98')res2 = ret.findall('123abc567def98')print(res1)print(res1.group())print(res2)out:
123['123', '567', '98']

fullmatch

参数说明

参数和match完全一致。

返回值

返回值和match完全一致。区别在于match是开头匹配,开头匹配成功就返回re.Match对象;fullmatch是完全匹配,从头到尾完全匹配才返回re.Match,匹配失败则返回None。

用途

校验用户输入的内容是否完全符合正则表达式。

案例

result1 = re.fullmatch('\d+','123abc567def98')print(result1)if result1:    print(result1.group())result2 = re.fullmatch('\d+','12345678')print(result2)print(result2.group())out:None
12345678

escape

escape函数可用来取消转义符,但不建议学习和使用它,请学好正则表达式,忘了escape吧。

re模块flags

请留心看re模块的函数,几乎都有flags参数。flags参数可以修改正则表达式的一些运行方式。多个标志可以通过使用按位运算符 | 来同时生效。如 re.I | re.M 。flags有两种书写形式,简写或全写均可。

I或IGNORECASE

忽略字母大小写。

L或LOCALE

影响 \w, \W, \b, 和 \B,具体取决于本地化设置。

M或MULTILINE

使用本标志后,‘^’和‘$’匹配行首和行尾时,会增加换行符之前和之后的位置。

S或DOTALL

使 “.” 特殊字符完全匹配任何字符,包括换行符(没有这个标志, “.” 匹配除换行符外的任何字符)。

X或VERBOSE

当该标志被指定时,在正则表达式中的空白符被忽略,除非该空白符在字符组中或在反斜杠之后。它还可以让你在正则表达式中用#写注释。

案例

result = re.findall('[a-z]+','123abc567def98HIJ')print(result)result = re.findall('[a-z]+','123abc567def98HIJ',re.I)print(result)out:['abc', 'def']['abc', 'def', 'HIJ']

转载地址:http://ysrqz.baihongyu.com/

你可能感兴趣的文章
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
MySQL Join算法与调优白皮书(二)
查看>>
Mysql order by与limit混用陷阱
查看>>
Mysql order by与limit混用陷阱
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
mysql replace用法
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql server has gone away
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>