<文件序列>查找名称模式

时间:2011-03-23 13:59:04

标签: c# file pattern-matching sequence

我正试图找出解决多种类型文件序列的可靠方法。

考虑这些序列

  

file_0000.jpg
  file_0001.jpg
  file_0002.jpg等   &安培;
  new1File001.jpg
  new1File002.jpg
  new1File003.jpg

因此需要找出序列码的第一个小数开始的位置。

FileInfo[] files = new DirectoryInfo(@"\\fileserver\").GetFiles("*.*", SearchOption.AllDirectories);
var grouped = files.OrderBy(f => f.Name).GroupBy(f => f.Name.Substring(0, f.Name.LastIndexOf("_")));

显然,这会找到序列编号用“_”分隔的文件序列。我希望它按最后一个十进制序列的第一个小数位置进行过滤。我的正则表达式技巧并不好,即便如此,我也不知道如何在lamba表达式中使用它。

主要问题是,如何找出数字字符串在上述情况下的起点。

任何指针都会很棒! 谢谢,
-Johan

1 个答案:

答案 0 :(得分:1)

是的,正则表达式是拯救:

var r = new Regex(@".+(\d{2,}).");
var grouped = 
    files.
        OrderBy(f => f.Name).
        GroupBy(f => r.Match(f.Name).Groups[0].Value);