我有多个需要解析的文件名。这些文件之间的一个共同点是级别(修订版)是点之前的最后一个字母。我需要一个接受连字符( - )的正则表达式。
文件名示例:
答案 0 :(得分:3)
试试这个
@"^\d*[a-zA-Z\-]\.dwg$"
c#too
的语法应该相同如果您需要捕获组,可以使用parenthesies来执行此操作。
所以例如:
@"^(\d*)([a-zA-Z\-])\.dwg$"
将在最后捕获您的号码和代码。
你Match
应该有一个名为Groups
的集合,第一个将是完全匹配,后续的集合将是parens中的组。
答案 1 :(得分:1)
嗯,你真的不需要正则表达式。您可以使用Path.GetFileNameWithoutExtension
和Path.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>();