我有一个输入
,如下所示:0;过期=2016-12-27T16:52:39
我正在尝试使用 Pattern
和 Matcher
从中仅提取日期。
private String extractDateFromOutput(String result) {
Pattern p = Pattern.compile("(expires=)(.+?)(?=(::)|$)");
Matcher m = p.matcher(result);
while (m.find()) {
System.out.println("group 1: " + m.group(1));
System.out.println("group 2: " + m.group(2));
}
return result;
}
为什么此匹配器找到超过 1 个组?输出结果如下:
group 1: expires=
group 2: 2016-12-27T17:04:39
我怎样才能从中只得到第2组?
谢谢!
最佳答案
因为您在正则表达式中使用了多个捕获组。
Pattern p = Pattern.compile("expires=(.+?)(?=::|$)");
只需删除周围的捕获组
过期
::
关于Java模式匹配字符串的开头和结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344051/