python正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
re模块使Python语言拥有全部的正则表达式功能。
二、Python字匹配
import re
r = r'ab' #定义匹配规则
print(re.findall(r,'abcdefgabcd'))
匹配规则r前面加了一个r,这样就不需要转义,比如遇到/n或者‘\t’或者‘\r’
输出:
['ab', 'ab']
注意:如果有元字符,使用转义符‘\’
eg:
r = r'1\*2' # *是元字符,所以这边需要加转义字符'\'
re.findall(r,'01*234501*23')
输出:
['1*2', '1*2']
三、Python元字符介绍
^ 匹配行首
$ 匹配行尾
. 匹配单字符
[] 匹配指定的一个字符集
[^] 补集匹配不在区间范围内的字符,注意^放在前面
四、Python特殊意义字符
\d 代表数字[0-9]
\D 非数字
\s 空白字符
\S 非空白字符
\w 单词字符[a-zA-Z0-9_]
\W 非单词字符
{} 前一个字符的重复次数
前一个字符在一个范围内的重复次数
* 将前一字符匹配大于等于0次,{0,}效果等价于*
+ 将前一个字符匹配大于等于1次,{1,}效果等价于+
? 将前一个字符匹配0次或1次,表示是否出现,{0,1}效果等价于?
*? 尽可能少的匹配
() 分组
{m,n} 至少有m个重复,至多有n个重复,忽略m即为m=0,忽略n即为上边界无穷大
() 分组
eg:
r = r'\.com\.cn|\.com|\.cn'
re.findall(r,'zz@qq.com.cn')
结果:
['.com.cn']
注意:.是元字符,所以要转义
练习:利用分组和特殊字符匹配邮箱,注意'\.com\.cn'放在前面,整体加上括号作为一个大的分组处理,方便看出来匹配的是哪个
五、Python正则常用函数
compile 编译后执行速度更快,findall返回匹配列表
match 匹配字符串开头,返回第一个匹配的内容
search 匹配字符串全文,返回第一个匹配的内容
注意:使用match和search必须要用到分组
我们可以使用group(num)或groups()匹配对象函数来获取匹配表达式。
group(num=0)匹配的整个表达式的字符串;
group()可以一次输入多个组号,在这种情况下它将返回一个包含哪些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从1到所含的小组号。
sub 字符串正则替换,返回替换字符串
subn 字符串正则替换,返回元组(替换字符串,替换次数)
split 返回切割后的列表
实例:
1、匹配身份证号
没有匹配到结果,缺少括号
posted on 2017-08-16 16:37 sunshine_zhf 阅读(121) 评论(0) 编辑 收藏 举报