复杂正则表达式 - 在列表中查找最新日期

时间:2012-09-21 21:28:13

标签: regex ftp

我正在使用具有一些FTP功能的第三方ETL工具,但它们很少(它被称为Pentaho)。

我需要做的就是从ftp站点下载最新的文件zip。网站内容如下所示:

...
File:tfo.supplement.20120901.done   9/1/2012    3:48:00 AM
File:tfo.supplement.20120901.zip    421144 KB   9/1/2012    3:48:00 AM
File:tfo.supplement.20120904.done   9/4/2012    3:57:00 AM
File:tfo.supplement.20120904.zip    421794 KB   9/4/2012    3:57:00 AM
File:tfo.supplement.20120905.done   9/5/2012    3:28:00 AM
File:tfo.supplement.20120905.zip    421875 KB   9/5/2012    3:28:00 AM

所以,在这种情况下,我想要tfo.supplement.20120905.zip文件。

第三方工具仅提供获取文件夹和正则表达式的get-file选项。它将获取与正则表达式匹配的目标FTP站点文件夹中的所有文件。

有人告诉我,有可能制作一个正则表达式,它将实际比较不同的匹配选项并输出最大值。例如。取所有以.zip结尾的tfo.supplement。*文件,并将中间的日期视为整数,选择具有最大整数的日期。

我不知道正则表达式可以支持这种功能。有人可以帮我构建一个我可以在这个用例中使用的表达式吗?

1 个答案:

答案 0 :(得分:3)

你正在寻找这样的东西吗? >>

s/\s(\d+)\/(\d+)\/(\d{4})\s/{$d = 10000*$3+100*$1+$2 if $d < 10000*$3+100*$1+$2}/eg;

测试此代码here