使用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

使用c#中的正则表达式提取文件扩展名

您有对话框过滤器格式。

扩展已经出现了两次(第一次出现是不可靠的),当你试图用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);
}

如果字符串格式相当固定,那么以下操作应该可以工作:

'.[^.;)]+