2012-05-09 95 views
1

我嘗試匹配不同的日期格式,我從不同的文件中解析。一個日期格式是例如:「星期四,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) 

在我看來,這兩個正則表達式應該匹配上述日期格式。我的失敗在哪裏?

回答

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) 

(我認爲應該通過:))

1

您似乎忘記了4位數的年份,因此第二個正則表達式不正確。

您的第一個正則表達式的最後一部分匹配2009的前兩位數字,然後匹配後面的所有數字。

0

你有忘了

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

您還可以測試小時以不同的格式。

相關問題