我正在尝试使用Java正则表达式提取字符串的重复部分。
我的字符串是:s01e04:11:08
正则表达式是:^s(\\d+)e(\\d+)(:\\d+)*$
正则表达式匹配,但当我尝试提取第三组时,它只返回它的最后一部分。
预期::11:08
得到::08
完整代码是:
public static void main( String args[] ) {
String marker = "s01e04:11:08";
Pattern r = Pattern.compile("^s(\\d+)e(\\d+)(:\\d+)*$");
Matcher matcher = r.matcher(marker);
if (matcher.find()) {
System.out.println(matcher.group(3));
}
}
}
答案 0 :(得分:3)
在重复周围添加一个捕获组:
^s(\\d+)e(\\d+)((:\\d+)*)$
^ ^
如果你不需要自己解决这个问题,你也可以让重复的组不被捕获:
^s(\\d+)e(\\d+)((?::\\d+)*)$
^^
答案 1 :(得分:1)
您的模式与1st":"。
不匹配尝试使用此功能。
("^s(\\d+)e(\\d+)((:\\d+)+)$")
(:\\d+)+
匹配:dd一次或多次。