gpt4 book ai didi

java - 在正则表达式中使用不情愿量词

转载 作者:行者123 更新时间:2023-12-04 04:59:55 26 4
gpt4 key购买 nike

到目前为止,我还没有在正则表达式中使用过不情愿的量词,我查看了该站点的一些问题以了解其功能和用途。虽然similar question描述性很强,我仍然无法理解它与 java tutorial 中的示例有何关联.我知道不情愿的量词匹配尽可能少的情况。那么,它如何解释正则表达式

".*?foo"

在字符串上
"xfooxxxxxxfoo"

返回两个匹配项: "xfoo""xxxxxxfoo" ?

此外,由于所有格量词的解释也不充分,有人可以解释为什么正则表达式
".*+foo"

在同一个字符串上不匹配任何东西?

最佳答案

“Greedy, Reluctant, and Possessive Quantifiers之间的差异”部分教程页面上的描述对我来说似乎很清楚。哪一部分你不明白?

要回答您的具体问题:

  • 对于图案".*?foo" ,不情愿的量词( .*? )首先什么都不抓;模式的其余部分 ( foo ) 无法匹配。匹配备份到不情愿的量词,然后抓取一个字符( x );然后模式的其余部分匹配。然后整个模式再次开始(在第一个 "foo" 之后)并且直到它捕获所有的 x 才匹配。第二个之前的字符 foo ,此时它具有第二个匹配项。
  • 对于模式 ( ".*+foo" ),所有格量词 ( .*+ ) 获取所有可能的输入(因为 "." 匹配任何内容)并且没有任何剩余的内容可以匹配 "foo"图案的一部分。因为 ".*+"是占有欲,它不会返回任何东西;因此,与贪婪量词不同,当匹配备份到所有格量词时,它只会失败。
  • 关于java - 在正则表达式中使用不情愿量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263061/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com