[英]Java Pattern to match String beginning and end?
我有一个看起来像这样的input
: 0; expires=2016-12-27T16:52:39
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
我如何只能从中获得第二组?
谢谢 !
因为您在正则表达式中使用了多个捕获组。
Pattern p = Pattern.compile("expires=(.+?)(?=::|$)");
只需删除周围的捕获组
expires
::
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.