发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

EL的贪婪、勉强和侵占量词



EL的贪婪、勉强和侵占量词

今天看了就是火龙果写的那个教程,关于这3个量词理解的不是很明白,不知道竹子能不能更易懂的说明一下~谢谢
Enjoy Java,Enjoy eceryday !!!
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

贪婪,就是从右向左匹配
懒惰,勉强 从左向右匹配

侵占, 一次性匹配,Yes/NO ,不存在逐个匹配问题。
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

一群黑白小猪,按照黑白黑白的间隔顺序排队,
第一个是黑猪,最后一个是白猪。

我们匹配 黑猪 和 黑猪
如果贪婪匹配,由于倒数第二只为黑猪,返回第一只到倒数第二只之间的所有小猪

懒惰匹配,由于第三只小猪就是黑色,所以返回前3个小猪
侵占,则不满足,没有匹配结果!

我们匹配
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

引用 教程里的代码:

我的理解:因为贪婪是从右到左,所以先从左边开始匹配,当找到foo的时候,找到了第一个匹配,所以把整个xfooxxxxxxfoo认为是匹配的字符串吗?
Enter your regex: .*foo // 贪婪量词
Enter input string to search: xfooxxxxxxfoo
I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.

我的理解:从左到右,开始第一个找到匹配xfoo,然后会从截掉这个匹配的字符串里继续找匹配,对吗?
Enter your regex: .*?foo // 勉强量词
Enter input string to search: xfooxxxxxxfoo
I found the text "xfoo" starting at index 0 and ending at index 4.
I found the text "xxxxxxfoo" starting at index 4 and ending at index 13.

还是不是很明白:
原话:第三个例子的量词是侵占,所以在寻找匹配时失败了。在这种情况下,整个输入的字符串被.*+消耗了,什么都没有剩下来满足表达式末尾的“foo”。

这里的[整个输入的字符串被.*+消耗了]应该怎么理解?
Enter your regex: .*+foo // 侵占量词
Enter input string to search: xfooxxxxxxfoo
No match found.

麻烦你了~
Enjoy Java,Enjoy eceryday !!!
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

黑白猪比喻的好,一下就明白了。谢谢了
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

黑白猪,概念有了个大概了解。 以后还有待时间。
================================================
            蓝================法================典
================================================
编辑 回复 快速回复 TOP

Re:EL的贪婪、勉强和侵占量词

好不容易登陆上了,顶一个,说得太好了,对我帮助太大了, 呵呵~··
编辑 回复 快速回复 TOP
发新话题