[問題] 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