我有一个包含多个Zip
文件的文件夹,这些文件具有不同的命名约定。
1.zip
Hello.zip
SomeNameWithAnyCharacter-Xal_Yal_Zal_12345-20180518-152147535.zip
我想获得所有低于命名约定的zip文件:
[SomeNameWithAnyCharacter]-[Xal_Yal_Zal_][yyyyMMdd][HHmmssfff]
如何在C#,
中为以下代码应用 regexvar allFiles = Directory
.GetFiles(@"C:\FilePath", "*.zip")
.Select(f => new FileInfo(f))
.OrderByDescending(fi => fi.LastWriteTimeUtc);
答案 0 :(得分:4)
添加Where
所需的正则表达式:
var allFiles = Directory
.EnumerateFiles(@"C:\FilePath", "*.zip")
.Where(file => Regex.IsMatch(
Path.GetFileNameWithoutExtension(file), // match file name
@"Xal_Yal_Zal_[0-9]+-[0-9]{8}-[0-9]{9}$")) // with the required regex
.Select(file => new FileInfo(file))
.OrderByDescending(fi => fi.LastWriteTimeUtc);
模式:Xal_Yal_Zal_[0-9]+-[0-9]{8}-[0-9]{9}$
解释:
Xal_Yal_Zal_ - Xal_Yal_Zal_
[0-9]+ - one or more digits 0..9
- - minus sign
[0-9]{8} - 8 digits 0..9, e.g. 20180518
- - minus sign
[0-9]{9} - 9 digits 0..9, e.g. 152147535
$ - anchor - end of string