尝试在C#中为文件名创建自定义正则表达式

时间:2013-01-14 16:56:47

标签: c# regex

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

文件名示例:

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

3 个答案:

答案 0 :(得分:3)

试试这个

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

c#too

的语法应该相同

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

所以例如:

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

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

Match应该有一个名为Groups的集合,第一个将是完全匹配,后续的集合将是parens中的组。


This reference page

的详细信息

Here's a sample

答案 1 :(得分:1)

嗯,你真的不需要正则表达式。您可以使用Path.GetFileNameWithoutExtensionPath.GetExtension来获取名称和扩展部分。然后使用name.Substring(0, name.Length - 1)name[name.Length-1]获取号码并进行修改。

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

答案 2 :(得分:0)

考虑到lstFn

中有一个文件名列表

你可以做到

List<string> lstPFn=lstFn.Where(f=>Regex.IsMatch(f,@"^.*\.d.*$"))
                         .ToList<string>();