我有以下正则表达式(link)
[\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);
我似乎无法理解出了什么问题,有什么想法吗?
答案 0 :(得分:5)
您需要致电find
以转到第一场比赛。在致电matcher.find();
之前添加group()
。
一旦这样做,您的代码就会按预期工作。
答案 1 :(得分:1)
你需要在组之前调用matcher.matches()。
if(matcher.matches()){
String artist = matcher.group(0);
System.out.println(artist);
String song = matcher.group(1);
System.out.println(song);
}