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

时间:2015-11-11 18:39:01

标签: java regex

我有以下正则表达式(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);

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

2 个答案:

答案 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);
        }