贪婪的与不情愿的所有格量词
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.
第一个示例使用贪婪的量词。*查找“任何”,0次或多次,后面跟着字母“f”o“。因为量词是贪婪的,表达式的.*部分首先吃掉整个输入字符串。此时,整个表达式无法成功,因为最后三个字母(“f”o“)已经被使用( 是谁干的?)。所以这场比赛慢慢地退却了。 从右到左?)一次只写一个字母,直到“foo”的最右边出现被反拨( 这是什么意思?),此时匹配成功,搜索结束。
然而,第二个例子不太情愿,所以它从第一个消费开始( 是谁干的?)“什么都没有”。因为“foo”没有出现在字符串的开头,所以它被迫吞下( 谁燕子?)第一个字母(“x”),它在0和4处触发第一次匹配。我们的测试工具将继续这个过程,直到输入字符串耗尽为止。它在4点和13点找到了另一个匹配点。
第三个例子找不到匹配,因为量词是所有格的。在本例中,整个输入字符串由.*+、( 多么,怎样?)没有留下任何东西来满足表达式末尾的“foo”。如果您想在不退却的情况下捕获所有的东西,请使用所有格量词( 后退是什么意思?);在没有立即找到匹配的情况下,它将优于等效的贪婪量词。