Java Regex:如何匹配所有模式,包括重叠正则表达式匹配?

spa*_*ing 1 java regex

假设我有一个字符串NNNN.

正则表达式是N+N.

如何配置匹配让它返回NNNN,NNN并且NN因为NNNNN也匹配模式N+N

Cas*_*yte 5

您需要将模式封装在先行和捕获组中:

(?=(N+N))
Run Code Online (Sandbox Code Playgroud)

结果在第1组中.

由于前瞻是零宽度断言,因此模式不会使用字符,并且可以"重用"下一个匹配(来自字符串中的下一个位置).

N    N    N    N  
x______________^  # first match
     x_________^  # second match
          x____^  # third match
Run Code Online (Sandbox Code Playgroud)

x____^是捕获组的内容,x是起始位置.