使用正则表达式对zip文件进行模式匹配

时间:2014-03-11 07:25:28

标签: c# regex

以下zip文件需要使用它所在的模式或不在目录中进行检查。如何将模式与RegEx匹配?

Zip文件:

TestReport-20140311_18121024-BWSI MGMT-74482677-00f0-49ea-9330-f60738da4bc0.zip

要匹配的模式:

TestReport-{YYYYMMDD_HHmmssff}-[BWSI MGMT]-[UniqueId].zip

下面,

UniqueId是74482677-00f0-49ea-9330-f60738da4bc0

2 个答案:

答案 0 :(得分:0)

如果你真的想对此懒惰,你可以用一行正则表达式来做:

Regex rx("TestReport-(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})_(?<hours>\d{2})(?<minutes>\d{2})(?<seconds>\d{2})(?<fractions>\d{2})-(?<machine>.*?)-(?<guid>[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}).zip", RegexOptions.IgnoreCase);

但是,您也可以在给定的intervalls中拆分名称,假设名称肯定是以该格式保持不变。

答案 1 :(得分:0)

这个正则表达式会这样做:

(?i)TestReport-\d{8}_\d{8}-[a-z\s]+?-[a-f\d]{8}-(?:[a-f\d]{4}-){3}[a-f\d]{12}.zip

请注意,它不会检查日期值实际上是否为有效日期,只是它具有正确位置的数字。

  • (?i)关闭区分大小写。
  • \d{8}_\d{8}匹配日期。
  • [a-z\s]+?匹配BWSI MGMT。我不确定这是否总是这个字符串。如果是,则可以替换为BWSI\sMGMT
  • -[a-f\d]{8}-(?:[a-f\d]{4}-){3}[a-f\d]{12}匹配唯一ID。 (?:)是一个非捕获组。