【发布时间】:2023-03-17 01:21:01
【问题描述】:
Ftp 服务器每天创建以下文件。
- FGI_WTYUIO_D_2016_04_16_BS.daily.gzip - BS 文件
- FGI_WTYUIO_D_2016_04_16_BV.daily.gzip - BV 文件
- FGI_GHJK_D_2016_04_16_SATB3.daily.gzip - B3 文件
- FKI_GHJK_D_2016_04_16_SAT.daily.gzip - BV 文件
- FKI_GHJK_D_2016_04_16_SATB3.daily.gzip - B3 文件
- FKI_GHJK_D_2016_04_16_SATBS.daily.gzip - BS 文件
- FKI_GHJK_D_2016_04_16_SSD.daily.gzip - 需要忽略
- FKI_GHJK_D_2016_04_16_SSDBS.daily.gzip - 需要忽略
所以,基本上有两种文件类型
- FGI
- FKI
每个文件类型的三个报告代码
- BS
- BV
- B3
我需要忽略其余文件。 (SSD 文件)。
我需要在 Javascript 中编写正则表达式模式来获取这些文件。其中有以下变量。
- fileDate - 日期前。 2016_04_16
- matchReportCode - 例如。 BV,BS,B3
所以,如果 fileDate = 2016_04_15 和 matchReportCode='SV' (BS,BV)。那么我应该只获取以下文件。
- FGI_WTYUIO_D_2016_04_15_BS.daily.gzip - FGI BS 文件
- FGI_WTYUIO_D_2016_04_15_BV.daily.gzip - FGI BV 文件
- FKI_GHJK_D_2016_04_16_SAT.daily.gzip - FKI BV 文件
- FKI_GHJK_D_2016_04_16_SATBS.daily.gzip - FKI BS 文件
所以,如果 fileDate = 2016_04_19 和 matchReportCode='3S' (B3,BS)。那么我应该只获取以下文件。
- FGI_WTYUIO_D_2016_04_15_BS.daily.gzip - FGI BS 文件
- FGI_GHJK_D_2016_04_16_SATB3.daily.gzip - FGI B3 文件
- FKI_GHJK_D_2016_04_16_SATB3.daily.gzip - FKI B3 文件
- FKI_GHJK_D_2016_04_16_SATBS.daily.gzip - FKI BS 文件
到目前为止,我只能想出这个。
FileRegex = "F[KG]I_.*_D_" + fileDate + "_[A-z]{0,3}L{0,1}[" + matchReportCode + "]{0,1}.daily.gzip";
有人可以帮忙吗?我是正则表达式的新手。谢谢。
【问题讨论】:
-
正确的正则表达式:FileRegex = "F[KG]I_.*D" + fileDate + "_[A-z]{0,3}B{0,1}[ " + matchReportCode + "]{0,1}.daily.gzip";
标签: javascript regex regex-negation