(python语言)为什么正则表达式的 贪婪匹配模式 比 非贪婪模式 得到的匹配结果还要短?

贪婪匹配比非贪婪匹配得到的结果短,,,,那么贪婪匹配的贪婪特性体现在哪里?如此还不如改名叫非贪婪好了。。。。。。我知道我肯定有地方没理解到位,请在座各位python高手指... 贪婪匹配 比 非贪婪匹配 得到的结果短,,,,那么贪婪匹配的 贪婪 特性体现在哪里?如此还不如改名叫非贪婪好了。。。。。。我知道我肯定有地方没理解到位,请在座各位python高手指点一下,不胜感激。。。。。。。。。。示例如下图,谢谢! 展开
 我来答
貌似風輕
2018-06-09 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:692万
展开全部

不清楚你的贪婪模式的正则是怎么的:.*(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()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式