我有一个包含时间的字符串列表,格式如下。
15 min 43 sec
我只想提取43
。我在http://regexr.com/练习但找不到答案。我现在得到的答案是\d+\s+min+\s+(\d*)+\s+sec
,它与整个单词相匹配。但它应该只匹配43
。期待很快的帮助。提前谢谢。
答案 0 :(得分:1)
一个基本而快速的解决方案可以...... \s(\d+)\s
但试着找一个更好的;)
答案 1 :(得分:1)
使用lookaround:
(\d+)(?=\s+sec)
答案 2 :(得分:0)
以下模式包含两个捕获组(分钟和秒),并允许值之间有任意数量的空格。如果只需要提取秒数,那么一组就足够了。
要提取值,请匹配输入(使用Matcher
)并读取相应组的值(matcher.group(n)
,其中1是第一组) :
Pattern pattern = Pattern.compile("(\\d+)\\s*min\\s*(\\d+)\\s*sec");
String[] data = {"15 min 43 sec", "15min 43sec", "15 min 43 sec"};
for (String d : data) {
Matcher matcher = pattern.matcher(d);
if (matcher.matches()) {
int minutes = Integer.parseInt(matcher.group(1));
int seconds = Integer.parseInt(matcher.group(2));
System.out.println(minutes + ":" + seconds);
} else {
System.out.println("no match: " + d);
}
}