加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式贪婪性---点星(.*) 20190618

发布时间:2020-12-14 05:55:24 所属栏目:百科 来源:网络整理
导读:""" 1.正则表达式的贪婪性(.*) 点(.)表示匹配出换行符以外的任意一个字符串 星号(*)表示匹配前面一个字符串0次或多次 这两个字符串一起使用表示匹配除换行符以外的任意多个字符; 也就是说(.*)组合时,会尽可能多的去匹配满足条件的字符换; 这就是
"""
1.正则表达式的贪婪性(.*)
点(.)表示匹配出换行符以外的任意一个字符串
星号(*)表示匹配前面一个字符串0次或多次
这两个字符串一起使用表示匹配除换行符以外的任意多个字符;
也就是说(.*)组合时,会尽可能多的去匹配满足条件的字符换;
这就是点星(.*)的贪婪性
"""
import re
s = ".*1234anfdknfds"
res = re.match(r".*",s).group()
print(res
 
"""
2.正则表达式的贪婪性(.*)
只有当正则表达式中要匹配的字符数小于等于原字符串中的字符数时,才有可能匹配出结果;
".*"在匹配的过程中会回溯,先匹配0次,如果整个表达式能匹配成功,再匹配一次;
如果还能匹配,那就再匹配两次,这样一次次匹配下去,知道不能匹配成功时,返回最近一次匹配成功的结果。
这就是".*"的贪婪性!
"""
import re
try:
    res1 = re.match(r.*..,..).group()
except AttributeError as e:
    print("匹配失败")
else:
    print("为发生异常")
    print("匹配结果是:",res1)
mport re
try:
    res1 = re.match(r.*g.,.*g235abcf).group()
except AttributeError as e:
    print("匹配失败")
else:
    print("为发生异常")
    print("匹配结果是:",res1)
#本次匹配不成功,因为正则表达式中药匹配的字符串大于原字符串
import re
try:
    res1 = re.match(r.*...,..).group()
except AttributeError as e:
    print(u"匹配失败")
else:
    print("为发生异常")
    print("匹配结果是:",res1)
"""
3.正则表达式的贪婪性
在点星(.*)后面加上问号(?),表示匹配前面匹配的字符0次或1次;这样就可以限制点星(.*)的贪婪性
"""
import re
line = this is gowod 1234wordtestd

#未限制贪婪性
res1 = re.search(r".*1.*d",line,re.M|re.I)
print(res1.group())

#限制贪婪性
res2 = re.search(r".*1.*?d",re.M|re.I)
print(res2.group())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读