貪婪的與不情愿的所有格量詞我發現了這個優秀教程關于正則表達式,雖然我直覺地理解了“貪婪”、“不情愿”和“所有格”量詞的作用,但我的理解似乎有一個嚴重的漏洞。具體而言,在以下示例中: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.解釋提到吃整個輸入字符串,字母是消耗掉馬徹退卻,最右邊出現的“foo”是反流等不幸的是,盡管有很好的比喻,我還是不明白誰吃了什么.你知道另一個教程解釋(簡明扼要)嗎?多么,怎樣正則表達式引擎能工作嗎?或者,如果有人可以用一些不同的措辭解釋以下段落,我們將不勝感激:第一個示例使用貪婪的量詞。*查找“任何”,0次或多次,后面跟著字母“f”o“。因為量詞是貪婪的,表達式的.*部分首先吃掉整個輸入字符串。此時,整個表達式無法成功,因為最后三個字母(“f”o“)已經被使用(是誰干的?)。所以這場比賽慢慢地退卻了。從右到左?)一次只寫一個字母,直到“foo”的最右邊出現被反撥(這是什么意思?),此時匹配成功,搜索結束。然而,第二個例子不太情愿,所以它從第一個消費開始(是誰干的?)“什么都沒有”。因為“foo”沒有出現在字符串的開頭,所以它被迫吞下(誰燕子?)第一個字母(“x”),它在0和4處觸發第一次匹配。我們的測試工具將繼續這個過程,直到輸入字符串耗盡為止。它在4點和13點找到了另一個匹配點。第三個例子找不到匹配,因為量詞是所有格的。在本例中,整個輸入字符串由.*+、(多么,怎樣?)沒有留下任何東西來滿足表達式末尾的“foo”。如果您想在不退卻的情況下捕獲所有的東西,請使用所有格量詞(后退是什么意思?);在沒有立即找到匹配的情況下,它將優于等效的貪婪量詞。
- 3 回答
- 0 關注
- 678 瀏覽
添加回答
舉報
0/150
提交
取消