Expressão regular funciona em um testador on-line, mas falha em java

Eu tenho a seguinte expressão regular ( link )

[\d\.]+[ ](.*?)[ ]{2,}(.+) 

No entanto, o código Java equivalente falha ao combinar:

 String REGEX = "[\\d\\.]+[ ](.*?)[ ]{2,}(.+)"; Pattern pattern = Pattern.compile(REGEX); String line = "1. QUEEN WE ARE THE CHAMPIONS" Matcher matcher= pattern.matcher(line); String artist = matcher.group(0); String song = matcher.group(1); 

Eu não consigo entender o que está errado, alguma idéia?

Você precisa ligar para find a primeira partida. Adicione matcher.find(); antes de chamar group() .

Depois de fazer isso, seu código funciona conforme o esperado.

Você precisa chamar matcher.matches () antes do grupo.

 if(matcher.matches()){ String artist = matcher.group(0); System.out.println(artist); String song = matcher.group(1); System.out.println(song); }