正则表达式非贪婪模式的疑问

weixin_42416312 2018-06-26 05:46:43
非贪婪模式意思是指在匹配成功的条件下尽量少匹配。 我看到网上举例是说a.*?b匹配aabab能匹配到aab和ab 问题是ab不就是最小的匹配了吗?为什么还能匹配到aab呢
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42416312 2018-06-26
  • 打赏
  • 举报
回复
引用 4楼ambit_tsai 的回复:
引用 3 楼 weixin_42416312的回复:
[quote=引用 2楼ambit_tsai 的回复:]或者这么理解,最小匹配是指每次匹配的时候,匹配到字符要最少的,而a.*?b在这里完成了两次匹配,所以匹配到aab和ab。
假如有字符串aaab,按照你的意思匹配到的就是aaab,aab,ab对吗?
不是,匹配到aaab,被匹配过了不会再匹配的[/quote]谢谢,明白了
ambit_tsai-微信 2018-06-26
  • 打赏
  • 举报
回复
引用 3 楼 weixin_42416312的回复:
引用 2楼ambit_tsai 的回复:
或者这么理解,最小匹配是指每次匹配的时候,匹配到字符要最少的,而a.*?b在这里完成了两次匹配,所以匹配到aab和ab。
假如有字符串aaab,按照你的意思匹配到的就是aaab,aab,ab对吗?
不是,匹配到aaab,被匹配过了不会再匹配的
weixin_42416312 2018-06-26
  • 打赏
  • 举报
回复
引用 2楼ambit_tsai 的回复:
或者这么理解,最小匹配是指每次匹配的时候,匹配到字符要最少的,而a.*?b在这里完成了两次匹配,所以匹配到aab和ab。
假如有字符串aaab,按照你的意思匹配到的就是aaab,aab,ab对吗?
ambit_tsai-微信 2018-06-26
  • 打赏
  • 举报
回复
或者这么理解,最小匹配是指每次匹配的时候,匹配到字符要最少的,而a.*?b在这里完成了两次匹配,所以匹配到aab和ab。
ambit_tsai-微信 2018-06-26
  • 打赏
  • 举报
回复
你理解错了,尽量少匹配表达得不太准确。
如a.*?b,在匹配时,会向后找b,一旦匹配到b,.*?就结束了。
所以,aab和ab都会被匹配到。

87,838

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧