貪婪的與不情愿的所有格量詞我發(fā)現(xiàn)了這個(gè)優(yōu)秀教程關(guān)于正則表達(dá)式,雖然我直覺地理解了“貪婪”、“不情愿”和“所有格”量詞的作用,但我的理解似乎有一個(gè)嚴(yán)重的漏洞。具體而言,在以下示例中:Enter your regex: .*foo // greedy quantifierEnter input string to search: xfooxxxxxxfoo
I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.Enter your regex: .*?foo
// reluctant quantifierEnter 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.Enter your regex: .*+foo
// possessive quantifierEnter input string to search: xfooxxxxxxfooNo match found.解釋提到吃整個(gè)輸入字符串,字母是消耗掉馬徹退卻,最右邊出現(xiàn)的“foo”是反流等不幸的是,盡管有很好的比喻,我還是不明白誰(shuí)吃了什么.你知道另一個(gè)教程解釋(簡(jiǎn)明扼要)嗎?多么,怎樣正則表達(dá)式引擎能工作嗎?或者,如果有人可以用一些不同的措辭解釋以下段落,我們將不勝感激:第一個(gè)示例使用貪婪的量詞。*查找“任何”,0次或多次,后面跟著字母“f”o“。因?yàn)榱吭~是貪婪的,表達(dá)式的.*部分首先吃掉整個(gè)輸入字符串。此時(shí),整個(gè)表達(dá)式無法成功,因?yàn)樽詈笕齻€(gè)字母(“f”o“)已經(jīng)被使用(是誰(shuí)干的?)。所以這場(chǎng)比賽慢慢地退卻了。從右到左?)一次只寫一個(gè)字母,直到“foo”的最右邊出現(xiàn)被反撥(這是什么意思?),此時(shí)匹配成功,搜索結(jié)束。然而,第二個(gè)例子不太情愿,所以它從第一個(gè)消費(fèi)開始(是誰(shuí)干的?)“什么都沒有”。因?yàn)椤癴oo”沒有出現(xiàn)在字符串的開頭,所以它被迫吞下(誰(shuí)燕子?)第一個(gè)字母(“x”),它在0和4處觸發(fā)第一次匹配。我們的測(cè)試工具將繼續(xù)這個(gè)過程,直到輸入字符串耗盡為止。它在4點(diǎn)和13點(diǎn)找到了另一個(gè)匹配點(diǎn)。第三個(gè)例子找不到匹配,因?yàn)榱吭~是所有格的。在本例中,整個(gè)輸入字符串由.*+、(多么,怎樣?)沒有留下任何東西來滿足表達(dá)式末尾的“foo”。如果您想在不退卻的情況下捕獲所有的東西,請(qǐng)使用所有格量詞(后退是什么意思?);在沒有立即找到匹配的情況下,它將優(yōu)于等效的貪婪量詞。
- 3 回答
- 0 關(guān)注
- 677 瀏覽
添加回答
舉報(bào)
0/150
提交
取消