我正在尝试从这样的字符串中捕获一个或多个单词:
input: "aa bb"
pattern: "(.*) bb"
expected group: "aa"
input: "aa yy bb xx"
pattern: "(.*) bb (.*)"
expected groups: "aa yy, xx"
但在我的尝试中,它总是捕获整个字符串。我的错误在哪里?
String patternString = "(.*) bb";
Log("patternString: " + patternString);
Pattern p = Pattern.compile(patternString);
Matcher m = p.matcher("aa bb");
while(m.find()) {
Log("group: " + m.group());
//Log: group: aa bb
}
最佳答案
您想获得第一组而不是整场比赛。您应该为此使用 m.group(1)
,而不是返回整个匹配项的 m.group()
。
参见 documentation of Matcher
对于可用的 API。使用 Matcher#groupCount()
获取最后一场比赛中的组数。
关于Java 模式捕获词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952235/