如何捕获所有重复的组?
我想对所有以破折号分隔的字母进行一次匹配。我希望看到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
。