正则表达式适用于在线测试程序但在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); }