(python语言)为什么正则表达式的 贪婪匹配模式 比 非贪婪模式 得到的匹配结果还要短?
贪婪匹配比非贪婪匹配得到的结果短,,,,那么贪婪匹配的贪婪特性体现在哪里?如此还不如改名叫非贪婪好了。。。。。。我知道我肯定有地方没理解到位,请在座各位python高手指...
贪婪匹配 比 非贪婪匹配 得到的结果短,,,,那么贪婪匹配的 贪婪 特性体现在哪里?如此还不如改名叫非贪婪好了。。。。。。我知道我肯定有地方没理解到位,请在座各位python高手指点一下,不胜感激。。。。。。。。。。示例如下图,谢谢!
展开
1个回答
展开全部
不清楚你的贪婪模式的正则是怎么的:.*(a.*?a).* or .*?(a.*a).* or .*(a.*a).*
你给的例子匹配并没有问题
.*? 匹配的空
a.*?a 匹配的aqwertya
.* 匹配的aple
你可以试试给每段正则都加个分组然后打印每个分组的匹配结果,然后修改正则为贪婪和非贪婪分别看看结果。这样有助于你理解学习。
str='aqwertyaaple'
regex_str='(.*?)(a.*?a)(.*)'
match_obj=re.match(regex_str,str)
match_obj.group(1)
match_obj.group(2)
match_obj.group(3)
追问
由于度娘限制字数,我把疑惑写在评论里了,有时间烦请看一下吧,谢谢!
追答
“我想从字符串:aqwertyaaple中提取出‘aqwertya’这个子串”
如果你就想取aqwertya,那就用 a.*?a就好了。因为你在前后加的.*也涉及到匹配的贪婪和非贪婪问题,整个的话就相对复杂了。
为什么不直接用a.*?a呢?简单直接
str='aqwertyaaple'
regex_str='a.*?a'
match_obj=re.match(regex_str,str)
match_obj.group()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询