java正则表达式匹配一个字符串

时间:2014-05-19 18:25:22

标签: java regex pattern-matching

Regex'ers:

如何构建Java Regex以将字符串lexigraphically< =与给定日期字符串匹配?

例如,假设输入为YYYY-DD-MM格式:

2014-01-20 MLK day
2007-04-14 'twas a very good day
2014-05-19 is today
1998-11-30 someone's birthday

我希望过滤器在返回所有线路之前,比如今年的Groundhog,2014-02-20; 所以在上面的列表中,正则表达式将返回除今天之外的所有行。 (我不想转换 约会到大纪元时间;我想将一个正则表达式传递给一个运行map / reduce作业的类,以便这样做 我的输入记录阅读器可以使用正则表达式构建捆绑包以传递给映射器。)

TIA,

1 个答案:

答案 0 :(得分:0)

使用正则表达式做{​​{1}}类型逻辑几乎是不可能的。你在技术上可以,但你必须绘制出每个可能的场景......然后如果你想改变你要比较的日期,整个表达式就会改变。相反,我只是匹配所有日期/值,然后使用日期解析器来查看它是否小于日期。这是an expression to get you started

<=

然后日期将在捕获组1中。如果是(\d{4}-\d{2}-\d{2})\s+(.*) 土拨鼠日,那么您在捕获组2中拥有值。


为了说明使用正则表达式执行<=逻辑的复杂程度,我whipped together a quick expression匹配数字<=> 0

<= 27

如您所见,我们几乎需要绘制出每个场景。你可以想象这对于约会来说会有多么令人头痛......而且你不能说&#34; 2014-02-02&#34;你需要重做表达的大部分内容。