python正则表达式花括号_python正则表达式(+{})(⼆)加号-重复匹配多次
+ 表⽰匹配前⾯的⼦表达式⼀次或多次,不包括0次
⽐如,还是上⾯的例⼦,你要从⽂本中,选择每⾏逗号后⾯的字符串内容,包括逗号本⾝
但是,添加⼀个条件,如果逗号后⾯没有内容,就不要选择了。
⽐如,下⾯的⽂本中,最后⼀⾏逗号后⾯没有内容了,就不要选择了
苹果,是绿⾊的
橙⼦,是橙⾊的
⾹蕉,是黄⾊的
乌鸦,是⿊⾊的
猴⼦,
就可以这样写正则表达式 ,.+
验证⼀下如下图所⽰( + 和 * 的区别就是:不包括0次,所以没有选中最后⼀⾏):
,.+
绿⾊+
.+⾊
最后⼀⾏,猴⼦逗号后⾯没有其他字符了,但是?表⽰匹配⼀次或0次,所以最后⼀⾏也选中了⼀个逗
号字符,.?
花括号-匹配指定次数
花括号表⽰前⾯的字符匹配 指定的次数
⽐如,下⾯的⽂本
红彤彤,绿油油,⿊乎乎,绿油油油油
表达式 油{3,4}就表⽰匹配连续的油字⾄少3次,⾄多4次
正则表达式获取括号内容实际可以应⽤于获取⼿机号:
贪婪模式和⾮贪婪模式
我们要把下⾯的字符串中所有html标签都提取出来source='
Title
得到这样的⼀个列表:
['','
','','']
很容易想到使⽤正则表达式<.*>
写出如下代码
source='
Title
imort re
p=repile(r'<.*>')
print(p.findall(source))
运⾏结果却是:
['
Title']
怎么回事?原来在正则表达式中,' * ',' + ', ' ? '都是贪婪的,使⽤他们时,会尽可能多的匹配内容所以,<.*> 中的星号(表⽰任意次数的重复),⼀直匹配到了字符串最后的⾥⾯的e。
解决这个问题,就需要使⽤⾮贪婪模式,也就是在星号后⾯加上?,变成这样<.*?>
代码改为:
source='
Title'
imort re
p=repile(r'<.*?>')
print(p.findall(source))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论