Python中正则表示式的简单应用(结合re模块)

python中re模块函数及查找对象的方法

match()与search()函数

match函数尝试使用括号内的正则表达式从字符串的开头进行匹配,如果匹配成功则返回一个对象,否则返回None。search()函数使用括号内的正则表达式从字符串首次出现的位置开始查找,如果匹配成功则返回一个匹配对象,否则返回None。
举例如下:

>>>import re
...re.match('app', 'app123').group()
'app'

从’app123’的开头处寻找字符串’app’,匹配成功,返回’app’

>>> import re
...re.match('app', '123app').group()
AttributeError: 'NoneType' object has no attribute 'group'

因为字符串’123app’开始处不能匹配’app’,所以匹配失败,无法返回匹配对象。

>>>import re
... re.search('app', '123app').group()
'app'

因为search()函数不要求从字符串的开始处进行匹配,只从字符首次出现的位置进行匹配,所以匹配成功。

匹配多个字符串(|)(在正则表达式中,|表示匹配多个字符)

import re
bt = 'bat|bet|bit'
re.match(bt, 'bit').group()  #  返回 'bit',匹配成功
re.match(bt, 'He bit me').group() #匹配失败: 字符串开头没有bt中的字符串
re.search(bt, 'He bit me') # 返回'bit'匹配成功

匹配任意单个字符(.) (在正则表达式中,.表示匹配任意字符,换行符\n和空字符串除外)

import re
anyend = '.end'  # 如果要匹配'.'和end,即此处的'.'没有特殊意义,则在'.'前加上转意符'\',即anyend = '\.end'
re.match(anyend, 'bend').group() #匹配成功 返回'bend'  
re.match(anyend, 'end').group() #匹配失败,因为在anyend中,end前要有一个任意字符,而'end'中缺少一个与'.'对应的任意元素
re.match(anyend, '\nend').group() #匹配失败,'.'不能匹配换行符
re.search(anyend, 'Theend').group() #匹配成功,返回‘eend’

创建字符集合[](正则表达式中,表示匹配[]中任意一个字符)

>>>import re
>>>re.match('[cr][23][dp][o2]', 'c3po').group() # 匹配成功  
'c3po'

创建子组() (将括号内的匹配结果单独存储为一个子组)

>>>re.match('\w\w\w-\d\d\d', 'abc-123') .group() # \w表示字母或数字,\d表示数字
'abc-123'
>>>re.match('(\w\w\w)-(\d\d\d)', 'abc-123').group(1)
'abc'
>>>re.match('(\w\w\w)-(\d\d\d)', 'abc-123').group(2)
'123'
>>>re.match('(\w\w\w)-(\d\d\d)', 'abc-123').groups()
('abc', '123')  # 返回结果为一个元组的形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值