如何在Java中检查字符串是否包含日期?

如何检查字符串是否包含以下格式的日期:

2012年1月15日,星期日,美国东部标准时间晚上7:36

我正在使用的数据包含大量字符串。但是我要查找的字符串类型包含一个2或3个单词名称和一个日期。我正在检查日期以识别这些类型的字符串。

我已经找到了这种日期的simpleDateFormat。

String string1 = "Rahul Chowdhury Sunday, January 15, 2012 at 7:37pm EST";

String string2 = "Aritra Sinha Nirmal Friday, April 1, 2016 at 10:16pm EDT";

SimpleDateFormat format = new SimpleDateFormat("EEEEE, MMM dd, yyyy 'at' hh:mmaa z");

但是我不知道如何进一步进行。

我猜测正则表达式可能有效,但是当月/日名称的长度不同时,我不知道如何实现。即“五月”比“十二月”短得多。

我想知道是否有使用正则表达式的解决方案或更简单的解决方案。

回答:

您可以先使用正则表达式检查日期是否存在:

\w+,\s+\w+\s+\d+\,\s+\d+\s+at\s+\d+:\d+(pm|am)\s+\w{3,4}

此正则表达式同时匹配

Rahul Chowdhury Sunday, January 15, 2012 at 7:37pm EST

Aritra Sinha Nirmal Friday, April 1, 2016 at 10:16pm EDT

https://regex101.com/r/V0dAf8/2/

当您在文本中找到匹配项时,可以SimpleDateFormat用来检查其格式是否正确。

String input = "Rahul Chowdhury Sunday, January 15, 2012 at 7:37pm EST";

String regex = "(\\w+,\\s+\\w+\\s+\\d+\\,\\s+\\d+\\s+at\\s+\\d+:\\d+(pm|am)\\s+\\w{3,4})";

Matcher matcher = Pattern.compile(regex).matcher(input);

if (matcher.find()) {

System.out.println(matcher.group(1));

}

这将打印:

Sunday, January 15, 2012 at 7:37pm EST

以上是 如何在Java中检查字符串是否包含日期? 的全部内容, 来源链接: utcz.com/qa/422153.html

回到顶部