这是我问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
答案 0 :(得分:3)
matcher.group()
以及matcher.group(0)
始终返回整个匹配的字符串。
要获得第一个捕获组,请使用matcher.group(1)
,
第二个捕获组与matcher.group(2)
一起使用,依此类推。