使用c#中的正则表达式提取文件扩展名
本文关键字:提取 文件 扩展名 正则表达式 使用 | 更新日期: 2023-09-27 18:03:40
我想写一个正则表达式,可以从字符串中提取文件类型。
字符串就像:
文本文件( .prn; . txt; . rtf, . csv, .wq1) | .prn; . txt; . rtf, . csv, .wq1 | PDFFiles (.pdf)|.pdf|Excel Files( xls; .xlsx; .xlsm; .xlsb; .xlam; .xltx; .xltm; .xlw)
结果例如
.prn
您有对话框过滤器格式。
扩展已经出现了两次(第一次出现是不可靠的),当你试图用RegEx直接处理这个问题时,你必须考虑
Text.Files (.prn;.txt;.rtf;.csv;.wq1)|.prn;.txt;.rtf;.csv;.wq1|
等。
遵循已知的结构看起来更安全:
string filter = "Text Files (.prn;.txt;.rtf;.csv;.wq1)|.prn;.txt;.rtf;.csv;.wq1|PDF Files (.pdf)|.pdf|Excel Files (.xls;.xlsx;.xlsm;.xlsb;.xlam;.xltx;.xltm;.xlw)";
string[] filterParts = filter.Split("|");
// go through the odd sections
for (int i = 1; i < filterParts.Length; i += 2)
{
// approx, you may want some validation here first
string filterPart = filterParts[i];
string[] fileTypes = filterPart.Split(";");
// add to collection
}
这(仅)要求过滤器字符串具有正确的语法。
Regex extensionRegex = new Regex(@"'.'w+");
foreach(Match m in extensionRegex.Matches(text))
{
Console.WriteLine(m.Value);
}
如果字符串格式相当固定,那么以下操作应该可以工作:
'.[^.;)]+