匹配器不 return 匹配的正则表达式,而是 return 组 (0) 中的整个字符串 (Java)

Matcher doesn't return the matched regex, instead returns whole string in group(0) (Java)

我面临的问题是,按照 link、Using Regular Expressions to Extract a Value in Java 的问题,我无法提取正确的字符串组

Pattern p = Pattern.compile("I have .*");
Matcher m = p.matcher("I have apples");

if(m.find()){
    System.out.println(m.group(0));
}

我得到的:

I have apples

我想得到的:

apples

我也试过询问 m.group(1) 但它抛出了一个异常。

我该怎么办?

您必须定义一个捕获组才能使 m.group(...) 正常工作。

将模式更改为

Pattern p = Pattern.compile("I have (.*)");

m.group(0) 'denotes the entire pattern' m.group(1) 现在 returns 预期 'apple'