栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号