C# Regex以获取文件扩展名
我有一个包含文件名的列表(没有完整路径)C# Regex以获取文件扩展名,c#,regex,C#,Regex,我有一个包含文件名的列表(没有完整路径) List List=新列表(); 列表。添加(“文件1.doc”); 添加(“File2.pdf”); 列表。添加(“文件3.xls”); foreach(列表中的变量项){ var val=项目拆分('.'); var ext=val[1]; } 我不想使用String.Split,如何使用regex获得文件的扩展名 你可以用 示例(同时删除点): 你不需要使用正则表达式。你可以使用这个方法 返回指定路径字符串的扩展名 这里有一个。“\\.\.\.[
List List=新列表();
列表。添加(“文件1.doc”);
添加(“File2.pdf”);
列表。添加(“文件3.xls”);
foreach(列表中的变量项){
var val=项目拆分('.');
var ext=val[1];
}
我不想使用String.Split
,如何使用regex获得文件的扩展名 你可以用
示例(同时删除点):
你不需要使用正则表达式。你可以使用这个方法 返回指定路径字符串的扩展名 这里有一个。
“\\.\.\.[^\.]+”
匹配任何以
字符开头,后跟一个或多个无
字符的字符
顺便说一句,其他人是对的,正则表达式在这里是多余的。正则表达式是对的
\.([A-Za-z0-9]+)$
转义句点、1个或多个字母数字字符、字符串结尾
您还可以使用LastIndexOf(“.”)
但是使用内置函数总是更方便。要使用regex获得扩展:
foreach (var item in list) {
var ext = Regex.Match( item, "[^.]+$" ).Value;
}
或者,如果要确保有一个点:
@"(?<=\.)[^.]+$"
(?为了谷歌的利益- 我正在处理奇怪的文件名,例如FirstPart.SecondPart.xml,扩展名未知 在本例中,Path.GetFileExtension()被额外的点弄糊涂了 我用的正则表达式是
\.[A-z]{3,4}$
i、 e.将最后一个3或4个字符的实例仅与前面的点匹配。您可以在此处进行测试。不是获奖者,而是完成了该技巧
一个明显的缺陷是,如果第二部分是3-4个字符,并且文件没有扩展名,那么它会选择该部分,但是我知道这不是我会遇到的情况。为什么不使用Path.GetExtension?如果您只想要扩展名,那么这里的Regex就太过了。要获得正确的ext var ext=val[1];最好是:var ext=val[val.Length-1];,如果以字符串开头,当前代码作为正则表达式或任何其他方法的性能都会更好。我没有完整的文件路径。这也会解决这个问题-
\.[a-Za-z0-9]+$
int delim = fileName.LastIndexOf(".");
string ext = fileName.Substring(delim >= 0 ? delim : 0);
foreach (var item in list) {
var ext = Regex.Match( item, "[^.]+$" ).Value;
}
@"(?<=\.)[^.]+$"
\.[A-z]{3,4}$