为什么这个正则表达式模式不匹配?
Why does this regex pattern not match?
Regex101 link: https://regex101.com/r/MsZy0A/2
我有以下正则表达式模式; .++b
测试数据如下; aaaaaaaacaeb
.
我不明白的是"Possessive quantifier"。我读过它不会回溯,它通常会这样做。但是,我认为无论如何都不必回溯?它只需要匹配 "b" 之前的任何内容,"b" 将匹配两次,因为 .+
匹配所有内容(包括 "b"),而 "b" after 也会匹配 "b".
谁能解释一下所有格量词在其中的作用?
这个问题与提到的问题不重复,我问的是这个特殊情况,因为我在阅读其他答案后仍然没有明白。
++
匹配一次和无限次,尽可能多次,不回馈 - 意味着,如果你写 .++
,它匹配所有内容,包括最后的 b
。因此,您的正则表达式中的附加 b
永远不会匹配。
如果您不使用所有格量词或者只是从匹配的 class [^b]++b
中删除 b
,您可以解决这个问题 - 但我会建议第一个。所有格量词几乎每次都是不必要的。
Regex101 link: https://regex101.com/r/MsZy0A/2
我有以下正则表达式模式; .++b
测试数据如下; aaaaaaaacaeb
.
我不明白的是"Possessive quantifier"。我读过它不会回溯,它通常会这样做。但是,我认为无论如何都不必回溯?它只需要匹配 "b" 之前的任何内容,"b" 将匹配两次,因为 .+
匹配所有内容(包括 "b"),而 "b" after 也会匹配 "b".
谁能解释一下所有格量词在其中的作用?
这个问题与提到的问题不重复,我问的是这个特殊情况,因为我在阅读其他答案后仍然没有明白。
++
匹配一次和无限次,尽可能多次,不回馈 - 意味着,如果你写 .++
,它匹配所有内容,包括最后的 b
。因此,您的正则表达式中的附加 b
永远不会匹配。
如果您不使用所有格量词或者只是从匹配的 class [^b]++b
中删除 b
,您可以解决这个问题 - 但我会建议第一个。所有格量词几乎每次都是不必要的。