作者cat99961 (阿汤)
看板Ajax
标题[问题] javascript大全中的"非贪进重复"
时间Mon May 5 20:01:30 2014
1.此方式会匹配字元进可能少次的出现,如/a+?/套用至字串"aaa",仅匹配第一个字母a
2.但非贪进版/a+?b/会和贪进版的/a+b/套用至字串"aaab",皆匹配整个字串
为什麽2会出现这样的结果,我看javascript大全的第255页的解释是"因为正规运算式范
式比对的方式是找出字串中第一个可能出现匹配的位置,既然在这个字串中第一个字元
处就有可能出现匹配,它就不会考虑在这个字元後可能出现的更短匹配
"
我实在看不懂它在写甚麽,在内文中说的"既然在这个字串中第一个字元处就有可能出现
匹配,它就不会考虑在这个字元後可能出现的更短匹配",那这样说的话
/a+?/套用至字串"aaa",不是也应该aaa而不是匹配第一个字母a
希望看得懂"javascript大全",这段在写甚麽的可以告诉我....
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.62.253
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1399291293.A.A8B.html
1F:→ cat99961:此段是关於javascript的正规运算式 05/05 20:03
2F:→ ck574b027:换句话说,a+? 如果已经得到 match,就不会继续吃字串 05/05 20:25
3F:推 GoalBased:不会考虑後面"更长"的匹配吧 05/05 21:03
4F:→ cat99961:书上写的是"更短" 05/05 21:51
5F:→ cat99961:而且书中写/a+?b/套用至aaab是匹配整个字串 05/05 21:56
6F:→ cat99961:不是我以为的ab 05/05 21:56
7F:→ ck574b027:他的解释是针对 a+?b,第一个 match 是 aaab,因为要 05/05 22:14
8F:→ ck574b027:从前面读过来啊,所以当然不会只配 ab 05/05 22:15
9F:→ TonyQ:因为 regex 是从前面往後读,他不会回头判断是不是可以更短 05/06 06:25
10F:→ cat99961:超感谢你们...我看懂了 05/06 10:54