c# - 如何修改这个有效的正则表达式以在 C# 中使用?

标签 c# regex

我正在使用https://regexr.com/https://regex101.com/创建一个正则表达式,用于过滤 C# 控制台应用程序中目录中的文件列表。

我尝试匹配的格式是 TLDxxyy其中:
-TLD是一个常数
-xx代表2位数字(00-99)
-yy代表字母数字值(00、a9、0z、zz)
- 不区分大小写

使用上面的 2 个网站,我想出了 tld(\d[0-9]{1})([a-zA-Z0-9]{2}).txt这在我的测试样本上效果非常好。

tld001a8.txt   bad
tls0za8.txt    bad
tls0gy8.txt    bad
tld01a9.txt    good
tld030z.txt    good
tld07zz.txt    good
tld1200.txt    good

以下代码会导致以下错误

System.IO.DirectoryNotFoundException: 'Could not find a part of the path '\w1\whist6\tld('.'

注意('.在我的道路上。

public static void Test()
{
    var filesToProcess = new List<string>();

    var pathsToSearch = new[] {
        @"\\w1\whist6",
        @"\\w2\whist2"
    };

    var regex = new Regex(@"tld(\d[0-9]{1})([a-zA-Z0-9]{2}).txt");


    var hist6Files = Directory.GetFileSystemEntries(pathsToSearch[0], regex.ToString());
    filesToProcess.AddRange(hist6Files);
}

最佳答案

如果你使用 Linq,你可以这样做:

string[] array = Directory.GetFileSystemEntries(pathName)
    .Where(f => searchPattern.IsMatch(Path.GetFileName(f)))
    .ToArray();

关于c# - 如何修改这个有效的正则表达式以在 C# 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631081/

相关文章:

c# - 'value' 中的路径必须以 '/' 开头。参数名称 : value

c# - Nest:你应该如何处理 C# 中的亮点

c# - 无需查询即可从数据库获取数据

c# - 如何更改此正则表达式以与 .Net 正则表达式引擎一起使用?

python - 获取包含换行符的列表

c# - 我的验证器都不起作用

C# XML 注释重用

java - 为什么我应该在不同的情况下使用不同数量的转义字符?

javascript - 将整个世界的正则表达式与多个字符串进行匹配

javascript - 更改与正则表达式匹配的文本颜色 - JavaScript