- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python正则表达式 三
Python正则表达式(三)2010-04-04 12:53 2re模块的基本函数
在上面的说明中,我们已经对re模块的基本函数findall很熟悉了。当然如果光有findall的话,很多功能是不能实现的。下面开始介绍一下re模块其它的常用基本函数。灵活搭配使用这些函数,才能充分发挥Python正则式的强大功能。
首先还是说下老熟人findall函数吧
findall(rule,target[,flag])
在目标字符串中查找符合规则的字符串。
第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在compile函数的说明中详细说明)。
返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个空列表。
2.1使用compile加速
compile(rule[,flag])
将正则规则编译成一个Pattern对象,以供接下来使用。
第一个参数是规则式,第二个参数是规则选项。
返回一个Pattern对象
直接使用findall(rule,target)的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,可以使用pile函数来将规则预编译,使用编译过返回的Regular Expression Object或叫做Pattern对象来进行查找。
s=111,222,aaa,bbb,ccc333,444ddd
rule=r\b\d+\b
compiled_rule=pile(rule)
compiled_rule.findall(s)
[111,222]
可见使用compile过的规则使用和未编译的使用很相似。compile函数还可以指定一些规则标志,来指定一些特殊选项。多个选项之间用|(位或)连接起来。
I IGNORECASE忽略大小写区别。
L LOCAL字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配é或。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。
M MULTILINE多行匹配。在这个模式下^(代表字符串开头)和$(代表字符串结尾)将能够匹配多行的情况,成为行首和行尾标记。比如
s=123 456\n789 012\n345 678
rc=pile(r^\d+)#匹配一个位于开头的数字,没有使用M选项
rc.findall(s)
[123]#结果只能找到位于第一个行首的123
rcm=pile(r^\d+,re.M)#使用M选项
rcm.findall(s)
[123,789,345]#找到了三个行首的数字
同样,对于$来说,没有使用M选项,它将匹配最后一个行尾的数字,即678,加上以后,就能匹配三个行尾的数字456 012和678了.
rc=pile(r\d+$)
rcm=pile(r\d+$,re.M)
rc.findall(s)
[678]
rcm.findall(s)
[456,012,678]
S DOTALL.号将匹配所有的字符。缺省情况下.匹配除换行符\n外的所有字符,使用这一选项以后,.就能匹配包括\n的任何字符了。
U UNICODE\w,\W,\b,\B,\d,\D,\s和\S都将使用Unicode。
X VERBOSE这个选项忽略规则表达式中的空白,并允许使用#来引导一个注释。这样可以让你把规则写得更美观些。比如你可以把规则
rc=pile(r\d+|[a-zA-Z]+)#匹配一个数字或者单词使用X选项写成:
rc=pile(r#start arule\d+#number|[a-zA-Z]+#word,re.VERBOSE)在这个模式下,如果你想匹配一个空格,你必须用\的形式(\后面跟一个空格)
2.2 match与search match(rule,targetString[,flag])
search(rule,targetString[,flag])
(注:re的match与search函数同compile过的Pattern对象的match与search函数的参数是不一样的。Pattern对象的match与search函数更为强大,是真正最常用的函数)
按照规则在目标字符串中进行匹配。
第一个参数是正则规则,第二个是目标字符串,第三个是选项(同compile函数的选项)
返回:若成功返回一个Match对象,失败无返回
findall虽然很直观,但是在进行更复杂的操作时,就有些力不从心了。此时更
您可能关注的文档
最近下载
- 2025年河南省医师定期考核试题.doc VIP
- 2025-2030年中国光配线架行业市场发展趋势与前景展望战略分析报告.docx
- 2023年甘肃白银有色集团股份有限公司技能操作人员社会招聘笔试真题.docx VIP
- 中华古籍word版 集藏小说 唐钟馗全传.docx VIP
- 2025年甘肃省白银有色集团股份有限公司技能操作人员社会招聘552人笔试备考试题及答案解析.docx VIP
- 【GAP程序文件】某养殖企业肉鸡GAP程序文件.doc VIP
- 外研版三起点三年级下册单词汇总.pdf VIP
- 机加工车间质量管理方案及考核细则(5篇范文).pdf VIP
- 2024年高中化学新课程标准 .pdf VIP
- 2025贵州西南能矿供应链管理有限公司招聘8人笔试备考试题及答案解析.docx VIP
文档评论(0)