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