繁体   English   中英

Java模式匹配字符串的开头和结尾?

[英]Java Pattern to match String beginning and end?

我有一个看起来像这样的input0; expires=2016-12-27T16:52:39 0; expires=2016-12-27T16:52:39我正在尝试使用PatternMatcher从这个日期中提取数据。

  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=(.+?)(?=::|$)");

只需删除周围的捕获组

  1. expires
  2. ::
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM