如何捕获所有重复的组?

我想对所有以破折号分隔的字母进行一次匹配。我希望看到3组,每组中都有一封信。怎么了?我可以得到所有小组吗?

val matcher = java.util.regex.Pattern.compile("(?:(\\w)-?)+").matcher("a-b-c")
matcher.matches()
println(matcher.groupCount())
println(matcher.group(0))
println(matcher.group(1))


此打印

1
a-b-c
c


我期待得到类似的东西

3
a-b-c
a

最佳答案

(\\w)(?=-|$)


试试看,看演示。

https://regex101.com/r/vD5iH9/14

您的正则表达式捕获的character前面有-。因此最后一个字符前面没有-。在正则表达式引擎中,组也记住了最后一个组,因此您得到了c

10-01 02:05
查看更多