匹配字符串与包含冒号的正则表达式

时间:2012-05-09 06:07:20

标签: java

我尝试匹配从不同文件解析的不同日期格式。一种日期格式例如是:“星期四,2009年11月12日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)

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)

(我认为应该通过:))

答案 2 :(得分:0)

您忘记了

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

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