欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-05-25

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。