这个问题在这里已有答案:
Regex101链接:https://regex101.com/r/MsZy0A/2
我有以下正则表达式模式; .++b
具有以下测试数据; aaaaaaaacaeb
。
我不明白的是“占有量词”。我读过它没有回溯,它通常会这样做。但是,我不认为它有必要回溯吗?它只需匹配任何内容,包括“b”,“b”将匹配两次,因为.+
匹配所有内容(包括“b”),而后面的“b”也匹配“b”。
有人可以解释占有量词在这方面的作用吗?
这个问题与所提到的问题不重复,我问的是这个特例,因为在阅读完其他答案之后我仍然没有得到它。
++
匹配一次和无限次,尽可能多次,没有回馈 - 意味着,如果你写.++
,它匹配包括最终的b
在内的一切。所以你的正则表达式中额外的b
永远不会匹配。
你可以解决这个问题,如果你不使用占有量词或者只是从匹配类b
中删除[^b]++b
- 但我会建议第一个。占有量词几乎每次都是不必要的。