1

我尝试匹配从不同文件解析的不同日期格式。例如,一种日期格式是:“Thu, 12 Nov 2009 14:17:44 -0000”

当我尝试将此字符串与第一个正则表达式匹配时,我得到一个真实的结果,当我使用第二个时,我得到一个错误的结果。

[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}.*   (1. regex)
[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}:.*  (2. regex)

在我看来,两个正则表达式都应该匹配上述日期格式。我的失败在哪里?

4

3 回答 3

1

您似乎忘记了 4 位数的年份,因此第二个正则表达式不正确。

你的第一个正则表达式的最后一部分是匹配的前两位数字,2009然后是后面的所有内容。

于 2012-05-09T06:13:28.073 回答
1

我怀疑最后一部分“\s+\d{2}:.*”是为了匹配“14:”,但你忘记了年份。所以解析器需要一个“:”,但在 2009 年找到了第二个零。

你需要的是这样的:

[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{4}\\s+\\d{2}:.*  (2. regex)

(我认为应该通过:))

于 2012-05-09T06:15:42.077 回答
0

你忘记了年份

"[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3} \\p{Digit}{4} (\\p{Digit}{2}:){2}[0-9][0-9].*";

您还可以测试不同格式的小时

于 2012-05-09T07:23:38.850 回答