Java 模式捕获词

标签 java regex

我正在尝试从这样的字符串中捕获一个或多个单词:

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/

相关文章:

java - 从 TOMCAT 迁移到 IBM Websphere 时出现 ORA-01017 用户名/密码无效

java - 内部类操作的静态方法

javac 使用默认访问修饰符编译类,即使文件名不同

c# - 使用正则表达式比较两个字符串

regex - Java正则表达式查找单词的完全匹配

javascript - 全局正则表达式不匹配背靠背模式

python - 正则表达式 - 匹配两个字符串之间的所有文本

java - 如何在不使用 seq.currval 的情况下检索序列的当前 ID

node.js - 为什么这些正则表达式不能与感叹号一起使用?

java - 在 Struts2 中,我没有在 success.jsp 页面上获取表单值