正则表达式适用于在线测试程序但在java中失败

我有以下正则表达式( 链接 )

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

但是,等效的Java代码无法匹配:

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

我似乎无法理解出了什么问题,任何想法?

你需要调用find来移动到第一场比赛。 添加matcher.find(); 在调用group()之前。

完成后,您的代码将按预期工作。

你需要在group之前调用matcher.matches()。

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