正则

import re

re.match函数
match(pattern,string,flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
re.I :忽略大小写
re.L:做本地户识别
re.M:多行匹配,影响^和$
re.S:是.匹配包括换行符在内的所有字符
re.U:根据unicode字符集解析字符,影响\w \W \b \B
re.X:h使我们以更灵活的格式理解正则表达式
功能:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None
.span()找到位置

re.search函数
search(pattern,string,flags=0)
功能:扫描整个字符串并返回第一个匹配成功的

re.findall函数
findall(pattern,string,flags=0)
功能:扫描整个字符串,并返回结果列表

正则表达式的元字符
. :匹配除换行符以外的任意字符
[] :字符集合,表示匹配方括号中所包含的任意一个字符
[a-z]:匹配任意一个小写字母
[A-Z]:匹配任意一个大写字母
[0-9]:匹配任意一个数字
[0-9a-zA-Z]:匹配任意的数字和字母
[0-9a-zA-Z_]:匹配任意的数字和字母和下划线
[^]:匹配除了括号中以外的所有字符
\d:匹配数字,效果等同[0-9]
\D:匹配非数字字符,效果等同[^0-9]
\w:匹配数字,字母和下划线,效果等同[0-9-a-zA-Z_]
\W:匹配非数字,字母和下划线
\s:匹配任意的空白符(空格,换行,回车,换页,制表),效果同[ \f\n\r\t]
\S:匹配任意的非空白符

边界字符
^ :行首匹配,和在[]里的^不是一个意思
$:行尾匹配
\A:匹配字符串开始,它和^的区别是\A只匹配整个字符串的开头,即便在re.M模式下也不会匹配其他行的行首
\Z:匹配字符串结束,它和的区别是\A只匹配整个字符串的结束,即便在re.M模式下也不会匹配其他行的行尾
\b:匹配一个单词的边界,也就是值单词和空格之间的位置
\B:匹配非单词边界

(xyz):匹配小括号内的xyz(作为一个整体去匹配)
x?:匹配0个或者1个(非贪婪匹配)
x*:匹配0个或者任意多个x(贪婪匹配)
x+:匹配至少一个x(贪婪匹配)
x{n}:匹配确定的n个x(n是一个非负整数)
x{n,}:匹配至少n个x
x{n,m}:匹配至少n个最多m个x
x|y:匹配的是x或者y

*? +? ? 最小匹配,解决贪婪问题

re.split(r’ +’,str1) 以空格切割
re.finditer(pattern,string,flags=0):与findall类似,扫描整个字符串,返回的是一个迭代器

字符串的替换和修改
re.sub(pattern,repl,string,count,flags=0)
repl:指定的用来替换的字符串
count:最多替换的次数
功能:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串,可以指定替换的次数,如果不指定,替换所有的匹配字符串。
re.subn(pattern,repl,string,count,flags=0)
区别:前者返回一个被替换的字符串,后者返回一个元组,第一个元素被替换的字符串,第二个元素表示被替换的次数

分组:除了简单的判断是否匹配之外,正则表达式还有提取子串的功能,用()表示的就是分组

import re

str1='010-53424235'
m=re.match(r'(?P<first>\d{3})-(\d{8})',str1)
print(m)
print(m.group(1))
print(m.group(2))
print(m.group('first'))
print(m.groups())

编译:当我们使用正则表达式时,re模块会干两件事
1.编译正则表达式,如果正则表达式本身不合法,会报错
2.用编译后的正则表达式去匹配对象
re.compile(pattern,flags=0)
编译成正则对象
x=re.compile(正则表达式pattern)
x.match(匹配的字符串string)
match,search,findall,split(string,maxsplit=0),sub(repl,string,count=0,flags=0),subn(repl,string,count=0,flags=0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值