-1

我有多个需要解析的文件名。这些文件之间的一个共同点是级别(修订)是点之前的最后一个字母。我还需要一个接受连字符 (-) 的正则表达式。

文件名示例:

  1. 068394B.dwg
  2. 06841213E.dwg
  3. 420676-.dwg
4

3 回答 3

3

尝试这个

@"^\d*[a-zA-Z\-]\.dwg$"

c# 的语法也应该相同


如果您需要捕获组,您可以使用括号来执行此操作。

例如:

@"^(\d*)([a-zA-Z\-])\.dwg$"

最后将捕获您的号码和您的代码。

Match应该有一个集合,称为Groups第一个将是完整匹配,随后的将是括号中的组。


此参考页面上的更多详细信息

这是一个示例

于 2013-01-14T17:06:14.560 回答
1

好吧,你真的不需要正则表达式。您可以使用Path.GetFileNameWithoutExtensionandPath.GetExtension来获取名称和扩展部分。然后使用name.Substring(0, name.Length - 1)andname[name.Length-1]获得编号和修订。

用于Int32.TryParse检查数字是否为数字,并if ((ext >= 'A' && ext <= 'Z') || ext == '-')检查修订是否有效。

于 2013-01-14T17:01:40.810 回答
0

考虑到你有一个文件名列表lstFn

你可以做

List<string> lstPFn=lstFn.Where(f=>Regex.IsMatch(f,@"^.*\.d.*$"))
                         .ToList<string>();
于 2013-01-14T17:01:38.723 回答