Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式匹配单词和行尾之间的日期时间?_Java_Regex - Fatal编程技术网

Java 正则表达式匹配单词和行尾之间的日期时间?

Java 正则表达式匹配单词和行尾之间的日期时间?,java,regex,Java,Regex,我正试图编写一个正则表达式模式匹配器,从原始http头响应中的上次修改和日期中提取日期。 我用一个缓冲读取器读入标题,然后逐行浏览以找到所需的信息。 我遇到麻烦的两个是 Date: Mon, 27 Jul 2009 12:28:53 GMT Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT 我希望从表示行的字符串中提取datetime,但我似乎找不到一个有效的正则表达式:/ 预期的输出应该如下所示 27 Jul 2009 12:28:53 GMT 我试

我正试图编写一个正则表达式模式匹配器,从原始http头响应中的上次修改和日期中提取日期。 我用一个缓冲读取器读入标题,然后逐行浏览以找到所需的信息。 我遇到麻烦的两个是

Date: Mon, 27 Jul 2009 12:28:53 GMT
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
我希望从表示行的字符串中提取datetime,但我似乎找不到一个有效的正则表达式:/ 预期的输出应该如下所示

27 Jul 2009 12:28:53 GMT
我试过这个,但不起作用

(?<=Date:\s).*(?=\n)
干杯
科里

你可以试试这个:

(?<=(Last\\-Modified|Date):\\s(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)(.+)
我会这样写:

Pattern pattern = Pattern.compile("(?:Date|Last-Modified)\\s*:[^,]+,\\s*(.*)");

String input =
            "Date: Mon, 27 Jul 2009 12:28:53 GMT\n" +
            "Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT";

Matcher matcher = pattern.matcher(input);
while(matcher.find()) {
    System.out.println(matcher.group(1));
}
基本上,您希望查找具有以下内容的行:

日期或上次修改:?:日期|上次修改 可选后跟空格:\\s* 文字: 后跟日期名称和逗号:[^,]+,, 后跟任何空格和您感兴趣的组:\\s**
你必须使用正则表达式吗?像这样的东西怎么样:

String input = "Date: Mon, 27 Jul 2009 12:28:53 GMT";
String output = input.split(", ")[1];

你能澄清你的问题吗?预期的输出应该是什么样的?为什么不使用HTTP库呢?尝试一种捕获方法:,结果将出现在组1 matcher.group1中。很明显,您有一个类似于[Date | Last Modified]的模式:3character,2digit 3character 4digit 2digit:2digit:2digit 3character可能会根据本地情况略有不同。。。那么,为它构建正则表达式的问题是什么呢?如果line.startsWithDate:{String dateStr=line.substring5.trim;ZonedDateTime date=ZonedDateTime.parsedateStr,DateTimeFormatter.RFC_1123_date_TIME;/*在这里使用date*/},不是更容易些吗?
String input = "Date: Mon, 27 Jul 2009 12:28:53 GMT";
String output = input.split(", ")[1];