pythonre模块之正则表达式详解

正则表达式,可以动态模糊匹配,最重要的是组合使用

  1. 5个主要套路:
    match():匹配第一个
    search():搜索全文本进行匹配
    findall():找到所有,不能使用group方法了
    split(‘A’,‘B’):切片,使用A将B分开
	res=re.split('[a-z]','123a4456b789')
print(res)#用a-z将字符串分开

sub(‘A’,‘B’,‘C’),替换,用B替换C中的A

res=re.sub('[0-9]+','|','abc12fds34kdf45fa',count=2)
print(res)
  1. 主要表达式:
    2.1 :’.'默认匹配除了\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行\n
res = re.match('Y.+','WYF123')#'.+匹配所有了'
res = re.search('Y[A-Z]+N','WUYIFAN123')#search搜索整个文本,match从头开始匹配,输出’YIFAN‘
print(res.group())

2.2:
‘^’,匹配字符开头,若指定flags MULTILINE,这种也可以匹配上 (r’^a’,’\nabc\neee’,flags=re,MULTILINE)
‘$’,匹配字符结尾
*,匹配号前的字符0次或多次
+,匹配前一个字符1次或多次
?,匹配前面的字符1次或0次

res = re.search('N1?','WUYIFAN123')#匹配W一次或0次
print(res.group())

2.3 :’{m}'匹配前一个字符m次

res = re.search('[0-9]{3}','WUYIFAN123')#输出123
print(res.group())'''

2.4:’{n,m}'匹配前一个字符n到m次

res = re.findall('[0-9]{1,3}','WUY12IFAN123')#匹配W一次或0次
print(res)#不用group了

2.5:# ,’|'匹配|左或|右的字符

res = re.findall('WU|12','WUY12IFAN123')#匹配W一次或0次
print(res)#findall,没有group方法
res = re.search('(12){2}','WUY1212IFAN123')#匹配两次12,也就是匹配1212
print(res.group())#不用group了
res = re.search('(12){2}(||=){2}','WUY1212IFAN123||=||=')#匹配两次12,也就是匹配1212
print(res)#不用group了

2.6: ‘(…)’,分组匹配
‘\A’,只从字符开头匹配
‘\Z’,匹配字符结尾

	res = re.search('\A[A-Z]+[0-9]\Z','WUYIFAN123')#匹配两次12,也就是匹配1212
print(res.group())#不用group了

2.7: ‘\d’,匹配数字0-9
‘\D’,匹配非数字
‘\w’,匹配[A-Z,a-z,0-9]
‘\W’,匹配非[A-Z,a-z,0-9]
‘s’,匹配空白字符,\t、\n、\r,
‘(?P…)’,分组匹配

res = re.search("((?P<name>[A-Z]+)(?P<id>[0-9]+))","UYIFAN123")#
print(res.groupdict())#输出{'name': 'UYIFAN', 'id': '123'}

2.8:re.I(re.IGNORECASE):忽略大小写

res=re.search('[a-z]+','ABCfdskdf',flags=re.I)
print(res.group())#输出ABCfdskdf

2.9:M(MUTILINE):多行模式,改变’^‘和’$'的行为

res=re.search(r'','\nABCfdskdf\ndaskl',flags=re.M)
print(res.group())

2.10: S(DOTALL):点任意匹配模式,改变’.'的行为

res=re.search(r'.+','\nABCfdskdf\ndaskl',flags=re.S)
print(res.group())#输出两行,以\n为换行符输出两行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值