我有input
,如下所示: 0; expires=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;
}
为什么这个匹配器会找到多个组?输出如下:
group 1: expires=
group 2: 2016-12-27T17:04:39
我怎样才能从中获得第2组?
谢谢!
答案 0 :(得分:3)
因为您在正则表达式中使用了多个捕获组。
Pattern p = Pattern.compile("expires=(.+?)(?=::|$)");
只需删除
周围的捕获组expires
::
答案 1 :(得分:0)
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));
// no group 2, accessing will gives you an IndexOutOfBoundsException
//System.out.println("group 2: " + m.group(2));
}
return result;
}