gpt4 book ai didi

regex - 量词 {0} 在某些情况下有意义吗?

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

例子:

/(?:Foo){0}bar/

我在另一个答案中看到了类似的内容。起初我想“那应该是什么”,但后来,“好吧,有点消极的看法”,所以 Foo之前不允许 bar ,但这不起作用。

你可以看到这个 here on Regexr : 只匹配 bar但它也匹配 barFoobar .
当我为行的开头添加一个 anchor 时:

/^(?:Foo){0}bar/

它的行为就像我期望的那样。它只匹配 bar而不是 barFoobar .

但这与我只使用 /bar/ 时的行为完全相同或 /^bar/ .

是量词{0}只是一个无用的副作用,还是真的有一个有用的行为?

最佳答案

{0}有很好的用途.它允许您定义目前不打算捕获的组。这在某些情况下很有用:

  • 最好的一个 - 在递归正则表达式(或其他奇怪的结构)中使用组。例如,Perl 有 (?(DEFINE) ) 同样的用途。
    一个简单的例子 - 在 PHP 中,这将匹配 barFoo ( working example ):
    preg_match("/(?:(Foo)){0}bar(?1)/", "barFoo", $matches);
  • 将失败的捕获组(命名或编号)添加到结果匹配中。
  • 保持所有组的索引完整,以防模式被重构。

  • 正如彼得建议的那样,不太好的用途在以下方面很有用:
  • 生成的模式。
  • 可读性 - 具有一定重复性的模式,其中 {0}{1}可能会引导人们朝着正确的方向思考。 (好吧,不是最好的点)

  • 这些都是罕见的情况,在大多数情况下,这是一个错误。

    关于regex - 量词 {0} 在某些情况下有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511600/

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