正则表达式捕获具有常见字符的组



我正在尝试匹配句子中匹配正则表达式的所有组,但这些组在句子中具有通用字符。 我面临这个问题: 举例来说,在这句话中:

A + B + C + D

我想猫粟:

A + B

然后

B + C

然后

C + D

使用 java.utils.regex.Matcher.find(带有模式([A-Z] + [A-Z])regex101) 它仅在最后一个匹配的字符之后开始匹配下一组,所以我只匹配 A + B,然后匹配 C + D。

有什么办法可以用正则表达式做到这一点吗?

我会在展望中匹配两者,然后消耗 1。

全局查找(?=([A-Z]s*+s*[A-Z]))[A-Z]
打印组 1 每个匹配项或仅获取一个数组。

重叠按匹配与消耗起作用。
在断言中匹配比您需要的更多,然后消耗更少。
消耗重新定位下一场比赛的开始。

这个过程使它重叠。

扩大

(?=
( [A-Z] s* + s* [A-Z] )    # (1)
)
[A-Z]

比赛

**  Grp 1 -  ( pos 0 , len 5 ) 
A + B  
**  Grp 1 -  ( pos 4 , len 5 ) 
B + C  
**  Grp 1 -  ( pos 8 , len 5 ) 
C + D  

最新更新