捕获所有子组

时间:2015-01-30 09:42:56

标签: java regex scala

我如何捕捉所有重复的群体?

我希望为破折号分隔的所有字母设置一个匹配项。我期待看到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

1 个答案:

答案 0 :(得分:0)

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

试试这个。看看演示。

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

你的正则表达式会捕获character,前面有-。所以前一个字符前面没有-。另外在群组中,正则表达式引擎会记住最后一个组。所以你得到了c