我正在使用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/