0

I have a single text file with 40,000 records. I need to locate all items greater than October 1st 2011. The format is 01-10-2011 - How can I do this using regular expression?

4

1 回答 1

3

可能不应该这样做,但可以这样做:

([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 中进行了测试,我怀疑他们是否随着时间的推移改变了他们的正则表达式引擎。Notepad++ 正则表达式不支持该栏,结果证明这是相当严重的。

要详细了解其工作原理,我们有 3 个用于匹配的顶级替代方案,由竖线 ( |) 分隔。第一种选择是:

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

它匹配 2011 年 10 月中 DD 不等于 01 的任何日期。为了在字符级别支持 02-31,([0-3][2-9]|[1-3]1)需要一个子栏组。此条的左侧匹配 02-39,省略了 11、21 和 31,而右侧恰好接受了这些遗漏。

下一个顶级替代方案是:

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

匹配 2011 年 11 月和 12 月中的任何一天。

最后一组是:

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

与 2012-2019 年任何一个月的任何一天匹配。

于 2012-02-16T20:35:40.897 回答