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

本文关键字:文件名 创建 自定义 正则表达式 | 更新日期: 2023-09-27 17:53:30

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

文件名示例:

  1. 068394 b。dwg
  2. 06841213 e.dwg
  3. 420676 -.dwg

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

try this

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

语法也应该与c#相同


如果需要捕获组,可以使用圆括号。

所以例如:

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

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

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


更多细节请参见此参考页

这里有一个示例

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

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

考虑到您在lstFn中有一个文件名列表

你可以做

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