python正则表达式模块简介
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。使用这个小型语言,你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想搞定的东西。然后你可以问诸如“这个字符串匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。你也可以使用 RE 以各种方式来修改或分割字符串。
正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。本文并不涉及优化,因为那要求你已充分掌握了匹配引擎的内部机制。
正则表达式语言相对小型和受限(功能有限),因此并非所有字符串处理都能用正则表达式完成。当然也有些任务可以用正则表达式完成,不过最终表达式会变得异常复杂。碰到这些情形时,编写 Python 代码进行处理可能反而更好;尽管 Python 代码比一个精巧的正则表达式要慢些,但它更易理解。
正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。
Grammar:
re.sub(pattern, repl, string[, count])
使用repl替换string中每一个匹配的子串后返回替换后的字符串。
当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不能使用编号0。
当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。
count用于指定最多替换次数,不指定时全部替换。
re.subn(pattern, repl, string[, count])
返回 (sub(repl, string[, count]), 替换次数)。
Case:
#coding=utf-8 import re str = "https://i.cnb1logs.co2m/Edi3tPosts.asp4x?opt=999" pattern=re.compile(r'(\.)') print '\. :' ,re.sub(pattern,'-',str) pattern=re.compile(r'\/([^*]+)\/') print '\/([^*]+)\/ :' ,re.sub(pattern,r'<em>\1<em>',str) pattern = re.compile(r'(\w+)(\w+)(\d+)') #先切片测试 print re.split(pattern,str) print re.sub(pattern,r'\3 \1',str) #subn统计sub替换次数 print re.subn(pattern,r'\3 \1',str)
Output
\. : https://i-cnb1logs-co2m/Edi3tPosts-asp4x?opt=999 \/([^*]+)\/ : https:<em>/i.cnb1logs.co2m<em>Edi3tPosts.asp4x?opt=999 ['https://i.', 'cn', 'b', '1', 'logs.', 'c', 'o', '2', 'm/', 'Ed', 'i', '3', 'tPosts.', 'as', 'p', '4', 'x?opt=', '9', '9', '9', ''] https://i.1 cnlogs.2 cm/3 EdtPosts.4 asx?opt=9 9 ('https://i.1 cnlogs.2 cm/3 EdtPosts.4 asx?opt=9 9', 5) ***Repl Closed***
总结
vs2019创建webapi 1.创建新的项目 2.选择.NET CORE的ASP .NET CORE WEB应用程序 ...
php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数...
原文发表自博客: blog.zhangbing.site 1、起源 朋友圈晒的很多的一本日历书《了...
1.情况描述: ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome...
前言 每当更换电脑就要从新搭建一遍开发环境。。。 每当拉完最新代码程序在本地...
上周,微软承认Win10 3月补丁KB5000802可能会让部分打印机(京瓷、理光等受灾严重...
我本人是 Vim 的重度使用者,就因为喜欢上这种双手不离键盘就可以操控一切的feel...
login.htm 请注册登录随风起舞 FORM ACTION="checklogin.asp" METHOD="POST" 电...
1.我该努力了,不为别的,就为了以后我想要的东西,我会自己给自己。 2.有些人...
大家都知道php上传文件有限制,如果没有修改过php.ini文件的话,默认的上传大小...