[问题] javascript大全中的"非贪进重复"

楼主: cat99961 (阿汤)   2014-05-05 20:01:30
1.此方式会匹配字符进可能少次的出现,如/a+?/套用至字串"aaa",仅匹配第一个字母a
2.但非贪进版/a+?b/会和贪进版的/a+b/套用至字串"aaab",皆匹配整个字串
为什么2会出现这样的结果,我看javascript大全的第255页的解释是"因为正规运算式范
式比对的方式是找出字串中第一个可能出现匹配的位置,既然在这个字串中第一个字符
处就有可能出现匹配,它就不会考虑在这个字符后可能出现的更短匹配
"
我实在看不懂它在写什么,在内文中说的"既然在这个字串中第一个字符处就有可能出现
匹配,它就不会考虑在这个字符后可能出现的更短匹配",那这样说的话
/a+?/套用至字串"aaa",不是也应该aaa而不是匹配第一个字母a
希望看得懂"javascript大全",这段在写什么的可以告诉我....
楼主: cat99961 (阿汤)   2014-05-05 20:03:00
此段是关于javascript的正规运算式
作者: ck574b027 (荒围!定厝!贼!妹!)   2014-05-05 20:25:00
换句话说,a+? 如果已经得到 match,就不会继续吃字串
作者: GoalBased (Artificail Intelligence)   2014-05-05 21:03:00
不会考虑后面"更长"的匹配吧
楼主: cat99961 (阿汤)   2014-05-05 21:51:00
书上写的是"更短"而且书中写/a+?b/套用至aaab是匹配整个字串不是我以为的ab
作者: ck574b027 (荒围!定厝!贼!妹!)   2014-05-05 22:14:00
他的解释是针对 a+?b,第一个 match 是 aaab,因为要从前面读过来啊,所以当然不会只配 ab
作者: TonyQ (自立而后立人。)   2014-05-06 06:25:00
因为 regex 是从前面往后读,他不会回头判断是不是可以更短
楼主: cat99961 (阿汤)   2014-05-06 10:54:00
超感谢你们...我看懂了

Links booklink

Contact Us: admin [ a t ] ucptt.com