试图在c#中为文件名创建自定义正则表达式
本文关键字:文件名 创建 自定义 正则表达式 | 更新日期: 2023-09-27 17:53:30
我有多个文件名需要解析。这些文件之间的一个共同点是级别(修订)是点之前的最后一个字母。我还需要一个接受连字符(-)的正则表达式。
文件名示例:
- 068394 b。dwg
- 06841213 e.dwg 420676 -.dwg
try this
@"^'d*[a-zA-Z'-]'.dwg$"
语法也应该与c#相同
如果需要捕获组,可以使用圆括号。
所以例如:
@"^('d*)([a-zA-Z'-])'.dwg$"
将在最后捕获您的号码和代码。
您的Match
应该有一个名为Groups
的集合,第一个将是完全匹配的,随后的将是父组中的组。
更多细节请参见此参考页
这里有一个示例
其实你并不需要正则表达式。您可以使用Path.GetFileNameWithoutExtension
和Path.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>();