我的Java正则表达式没有捕获该组

Geo*_*Geo 2 java regex

我正在尝试将用户名与正则表达式匹配.请不要建议拆分.

USERNAME=geo
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

    String input = "USERNAME=geo";
    Pattern pat = Pattern.compile("USERNAME=(\\w+)");
    Matcher mat = pat.matcher(input);
    if(mat.find()) {
        System.out.println(mat.group());
    }
Run Code Online (Sandbox Code Playgroud)

为什么不在geo小组中找到?我注意到如果我使用它.group(1),它会找到用户名.但是该group方法包含USERNAME=geo.为什么?

pol*_*nts 5

因为group()相当于group(0),0组表示整个模式.

文档:

public String group(int group)

组零表示整个模式,因此表达式m.group(0)相当于m.group()

正如您所发现的那样,使用您的模式,可以group(1)为您提供所需的内容.

如果你坚持使用group(),你必须修改模式"(?<=USERNAME=)\\w+".