为了账号安全,请及时绑定邮箱和手机立即绑定

贪婪的与不情愿的所有格量词

贪婪的与不情愿的所有格量词

摇曳的蔷薇 2019-06-05 13:50:17
贪婪的与不情愿的所有格量词我发现了这个优秀教程关于正则表达式,虽然我直觉地理解了“贪婪”、“不情愿”和“所有格”量词的作用,但我的理解似乎有一个严重的漏洞。具体而言,在以下示例中: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 回答

  • 3 回答
  • 0 关注
  • 601 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信