如何检查字符串是否包含这种形式的日期:
我正在处理的数据包含大量字符串。但是我正在寻找的字符串类型包含一个 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");
但我不知道如何进一步。我猜正则表达式可能会起作用,但是当月/日名称的长度不同时,我不知道如何实现它。即“May”比“December”短得多。
我想知道是否有使用正则表达式的解决方案或更简单的解决方案。
我知道还有其他线程在问类似的问题,但他们没有回答我的问题。
最佳答案
您可以首先使用正则表达式检查您的日期是否存在:
\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