python入门笔记——正则表达式③(含贪婪模式与非贪婪模式)

re.compile方法
compile把正则表达式编译成一个正则表达式对象
如:
test = re.compile(pattern)
result = test.match(string)
等效于result = re.match(pattern,string)
但前者所产生的正则表达式对象重用的效率更高

reobj = re.compile('\d{4}')
result = reobj.match('1234')
print(result.group())

输出结果:

1234

re.search方法
search在全文中匹配一次,匹配到就返回
语法与之前的match类似

data = 'I love China'
result1 = re.search('China',data)
print(result1.group())

输出结果:

China

re.findall方法
findall匹配所有返回一个列表,这个方法的使用频率较高
要注意它返回的是一个列表

message = '我在桃树下看着桃花吃桃子'
result2 = re.findall('桃.',message)
print(result2)

输出结果:

['桃树', '桃花', '桃子']

re.sub方法
sub将匹配到的数据进行替换
另外还有一个subn,除sub的功能之外,还会返回一个替换的数量

result3 = re.sub('h','H','hello the world')
# sub是将字符串里所有的符合替换条件的字符替换掉
print(result3)

输出结果:

Hello tHe world

re.split方法
split根据匹配进行切割字符串,并返回一个列表

result4 = re.split(',','百度,腾讯,阿里,字节跳动')
print(result4)

输出结果:

['百度', '腾讯', '阿里', '字节跳动']

贪婪模式与非贪婪模式
python中数量词默认是贪婪的,总是尝试匹配尽可能多的字符,非贪婪则相反,总是尝试匹配尽可能少的字符
在* ? + {m,n}后面加上?,使贪婪变成非贪婪

result = re.match('\d{3,6}','111222333444')
result1 = re.match('\d{3,6}?','111222333444')
print('贪婪模式:' + result.group())
print('非贪婪模式:' + result1.group())

'''
一个更好的例子是:
'''
data = 'aabcaaab'
pattern1 = re.compile('a.*?b')
pattern2 = re.compile('a.*b')

result2 = pattern1.search(data)
result3 = pattern2.search(data)
print('贪婪:' + result2.group())
print('非贪婪:' + result3.group())

输出结果:

贪婪模式:111222
非贪婪模式:111
贪婪:aab
非贪婪:aabcaaab
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值