2012-02-16 159 views
0

我有一個包含40,000條記錄的單個文本文件。我需要找到大於2011年10月1日的所有項目。格式爲01-10-2011 - 如何使用正則表達式來執行此操作?大於日期格式的正則表達式xx-xx-xxxx

+1

不確定正則表達式是去這裏的最佳方式。你使用的是什麼操作系統或語言? – 2012-02-16 20:18:55

+2

你在做什麼語言?你爲什麼要使用正則表達式? – ruakh 2012-02-16 20:18:57

+0

正則表達式是非常錯誤的工具,因爲它們使用_representation_日期而不是它們的_value_。 – 2012-02-16 20:21:37

回答

2

它可能不應該做的,但它可以做到:

([0-3][2-9]|[1-3]1)-10-2011|[0-3][0-9]-1[12]-2011|[0-3][0-9]-[01][0-9]-201[2-9] 

這是假設所有的日期是DD-MM-YYYY和有效的,而且你並不需要進一步查找日期未來將超過2019年,如有必要,可對其進行調整。

在Dreamweaver CS5中測試過,我懷疑他們已經改變了他們的正則表達式引擎。記事本+ +正則表達式不支持該欄,結果證明這是相當殘酷的。

有關這種工作原因的細目,我們有3個用於匹配的頂級替代方法,用條分隔(|)。第一種選擇是:

([0-3][2-9]|[1-3][0-9])-10-2011 

它匹配與DD不等於01. 2011年10月的任何日期爲了在角色等級達到支持02-31,子杆組,([0-3][2-9]|[1-3]1)是必要的。該欄的左側與02-39相符,省略了11,21和31,右側正好接受這些遺漏。

下一個頂級的選擇是:

[0-3][0-9]-1[12]-2011 

的任何一天在十一月和2011年

十二月的最後一組的匹配幾個月是:

[0-3][0-9]-[01][0-9]-201[2-9] 

哪匹配2012-2019年任何一個月的任何一天。

+0

([0-9] {2} - [1] [0-2] -2011 | [0-9] {2} - [0-9] {2} -201 [2-9]) – user1206919 2012-02-16 20:52:31

+0

這是我和一個內部人合作過。謝謝你們!所有的日期都是有效的格式,但原始數據文件不能以任何其他方式工作。我知道我有什麼挑戰。但是謝謝你! – user1206919 2012-02-16 20:54:58

+0

我們在同一時間發佈!謝謝!! – user1206919 2012-02-16 20:55:55