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