gpt4 book ai didi

c# - 正则表达式有条件地解析文件名和部分路径

转载 作者:太空狗 更新时间:2023-10-30 01:10:56 34 4
gpt4 key购买 nike

我有一个 C# 应用程序,它使用搜索功能查找目录中的所有文件,然后将它们显示在列表中。我需要能够根据扩展名(可能使用搜索功能)目录过滤文件(例如,阻止显示“测试”或“调试”目录中的任何文件)。

我目前的代码是这样的:

Regex filter = new Regex(@"^docs\(?!debug\)(?'display'.*)\.(txt|rtf)");
String[] filelist = Directory.GetFiles("docs\\", "*", SearchOption.AllDirectories);
foreach ( String file in filelist )
{
Match m = filter.Match(file);
if ( m.Success )
{
listControl.Items.Add(m.Groups["display"]);
}
}

(这有点简化和合并,实际的正则表达式是根据从文件中读取的字符串创建的,我在两者之间做了更多的错误检查。)

我需要能够挑选出一个部分(通常是相对路径和文件名)用作显示名称,同时忽略任何具有特定文件夹名称的文件作为其路径的一部分。例如,对于这些文件,只有带有 +s 的文件才应该匹配:

+ docs\info.txt
- docs\data.dat
- docs\debug\info.txt
+ docs\world\info.txt
+ docs\world\pictures.rtf
- docs\world\debug\symbols.rtf

我的正则表达式适用于大多数,除了我不确定如何让它在最后一个文件上失败。关于如何使这项工作有任何建议吗?

最佳答案

尝试 Directory.GetFiles .这应该可以满足您的要求。

例子:

// Only get files that end in ".txt"
string[] dirs = Directory.GetFiles(@"c:\", "*.txt", SearchOption.AllDirectories);
Console.WriteLine("The number of files ending with .txt is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}

关于c# - 正则表达式有条件地解析文件名和部分路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664068/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com