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?
问问题
10613 次
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 回答