正则表达式,大于日期格式xx-xx-xxxx

时间:2012-02-16 20:14:38

标签: regex regular-language

我有一个包含40,000条记录的单个文本文件。我需要找到比2011年10月1日更大的所有项目。格式为01-10-2011 - 如何使用正则表达式执行此操作?

1 个答案:

答案 0 :(得分: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中测试过,我怀疑它们随着时间的推移已经改变了它们的正则表达式引擎。 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任何一天的任何一天都匹配。