2015-01-30 5 views
1

Как я могу захватить все повторяющиеся группы?Захват всех подгрупп

Я хотел иметь одно совпадение для всех букв, разделенных тире. Я ожидал увидеть 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 
+0

Невозможно получить 3 групповых счета, кроме использования этого '(\\ w +) -? (\\ w +) -? (\\ w +)' regex. –

ответ

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

Попробуйте this.See демо.

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

Ваше регулярное выражение захватывает character который имеет - впереди it.So последний символ не имеет - впереди it.Also в группах регулярных выражений запоминает последнюю group.So вы получали c.