正则表达式并不是将特定部分而是整个字符串提取到组中

时间:2015-11-06 17:58:51

标签: java regex

这是我问here

的问题的后续跟进

给定的正则表达式是完美的,即(?:[^\/]*\/){4}([A-Za-z]{3}[0-9]{3})。但是,当我在java中执行此操作时,java将字符串匹配到匹配组,而不是只给我字符串。

String defaultRegex = "(?:[^\\/]*\\/){4}([A-Za-z]{3}[0-9]{3})";
String stringToMatch = "unknown/relevant/nonrelevant:2.2.2/random/ABC123:random/morerandom";
Pattern p = Pattern.compile(defaultRegex);
Matcher m = p.matcher (stringToMatch);
if (m.find()){
    System.out.println(m.group());
}

当我想要正则表达式给我unknown/relevant/nonrelevant:2.2.2/random/ABC123时,上面的内容正在打印ABC123

1 个答案:

答案 0 :(得分:3)

matcher.group()以及matcher.group(0)始终返回整个匹配的字符串。

要获得第一个捕获组,请使用matcher.group(1)

第二个捕获组与matcher.group(2)一起使用,依此类推。