代码之家  ›  专栏  ›  技术社区  ›  JordyvD

为什么这个正则表达式模式不匹配?[副本]

  •  3
  • JordyvD  · 技术社区  · 7 年前

    Regex101链接: https://regex101.com/r/MsZy0A/2

    我有以下正则表达式模式; .++b 具有以下试验数据; aaaaaaaacaeb .

    我不懂的是“所有格量词”。我读到过,它不会像通常那样回溯。然而,我不认为它必须回溯?它只需匹配小于等于“b”的任何内容,“b”将匹配两次,如下所示: .+ 匹配所有内容(包括“b”),后面的“b”也将匹配“b”。

    有人能解释一下所有格量词在这方面的作用吗?

    这个问题与前面提到的问题不同,我之所以问这个特殊的问题,是因为我在阅读了另一个答案后仍然没有得到答案。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Philipp    7 年前

    ++ 在一次和无限次之间进行匹配,尽可能多地进行匹配,而不进行回馈-如果您编写 .++ ,它匹配所有内容,包括决赛 b . 所以额外的 b 在你的正则表达式中永远不会匹配。

    如果你不使用所有格量词或只是删除 b 来自匹配类 [^b]++b -但我建议首先。所有格量词几乎每次都是不必要的。

    推荐文章