L’espressione regolare funziona su un tester online ma non riesce in java

Ho la seguente espressione regolare ( link )

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

Tuttavia, il codice Java equivalente non riesce a corrispondere:

 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); 

Non riesco a capire cosa va storto, qualche idea?

Devi chiamare find per passare alla prima partita. Aggiungi matcher.find(); prima di chiamare il group() .

Una volta che fai il tuo codice funziona come previsto.

Devi chiamare matcher.matches () prima del gruppo.

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