C# 如何从C中匹配的正则表达式计算文件名的结果#

C# 如何从C中匹配的正则表达式计算文件名的结果#,c#,regex,filesystems,counting,C#,Regex,Filesystems,Counting,我试图使用正则表达式来匹配文件类型的部分名称,然后计算匹配结果的数量并显示这些结果。 例如,如果正则表达式正在查找包含单词“germany”的文件名,并且其中有5个包含“germany”的文件,我希望能够从总数中计算出这些匹配项,并说“您有5个germany引用” 我设置了一个要计数的目录的路径,并设法获得了至少一种类型的匹配正则表达式(我想对多个表达式执行此操作),并使用foreach使用文件扩展名对它们进行计数 public static void russianBias() { int x

我试图使用正则表达式来匹配文件类型的部分名称,然后计算匹配结果的数量并显示这些结果。 例如,如果正则表达式正在查找包含单词“germany”的文件名,并且其中有5个包含“germany”的文件,我希望能够从总数中计算出这些匹配项,并说“您有5个germany引用”

我设置了一个要计数的目录的路径,并设法获得了至少一种类型的匹配正则表达式(我想对多个表达式执行此操作),并使用foreach使用文件扩展名对它们进行计数

public static void russianBias()
{
int x=0;
字符串[]replayslol=System.IO.Directory.GetFiles(@“C:\Games\World\u of_Tanks\replays”,“*.wotreplay”);
foreach(replayslol中的字符串文件)
{
字符串replayresult=string.Concat(replayslol);
俄罗斯正则表达式=新正则表达式(@“苏联-”);
foreach(俄罗斯比赛。比赛(重赛结果))
{
x++;
}
}
WriteLine(“你玩过俄罗斯车辆{0}”+x+“次!”);
//对所有国家重复
控制台。WriteLine(“按任意键关闭”);
Console.ReadLine()```
我们的目标是让每个国家在这场比赛中都能多次这样说。
问题是正则表达式似乎与文件名不太匹配,实际上匹配的项目太多。

我猜可能有一个表达式可以检查
Germany
,带有
I
标志,如果返回
true
,则只需添加一个计数器:

^(?=.*\bgermany\b).*$
试验
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 .如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入



我猜可能有一个表达式可以检查
Germany
,带有
I
标志,如果返回
true
,则只需添加一个计数器:

^(?=.*\bgermany\b).*$
试验
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 .如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入


将返回一个
字符串[]
当您在该数组上使用时,您将从数组中的所有字符串中创建一个字符串

当模式可能在字符串中出现多次时,以这种方式计算匹配项是不可靠的。请注意,您还可以使用2次a
foreach
,并对所有连接的字符串执行计数

我认为您可以检查文件名是否只与模式匹配,然后递增计数器

在本例中,您指定为regex
\u ussr-
的模式也可以是字符串。如果您只想检查文件名中是否出现字符串,可以使用

如果确实要使用正则表达式,可以替换对
file.Contains
的调用,该调用还将返回布尔值

例如:

int russiaCount = 0;
int germanyCount = 0;
string[] replayslol = System.IO.Directory.GetFiles(@"./replays", "*.wotreplay");
foreach (string file in replayslol)
{
    if (file.Contains("_ussr-")) {
        russiaCount++;
    }
    if (file.Contains("_germany-")) {
        germanyCount++;
    }
}
Console.WriteLine("You've played Russian vehicles {0} times and German vehicles {1} times!", russiaCount, germanyCount);

将返回一个
字符串[]
当您在该数组上使用时,您将从数组中的所有字符串中创建一个字符串

当模式可能在字符串中出现多次时,以这种方式计算匹配项是不可靠的。请注意,您还可以使用2次a
foreach
,并对所有连接的字符串执行计数

我认为您可以检查文件名是否只与模式匹配,然后递增计数器

在本例中,您指定为regex
\u ussr-
的模式也可以是字符串。如果您只想检查文件名中是否出现字符串,可以使用

如果确实要使用正则表达式,可以替换对
file.Contains
的调用,该调用还将返回布尔值

例如:

int russiaCount = 0;
int germanyCount = 0;
string[] replayslol = System.IO.Directory.GetFiles(@"./replays", "*.wotreplay");
foreach (string file in replayslol)
{
    if (file.Contains("_ussr-")) {
        russiaCount++;
    }
    if (file.Contains("_germany-")) {
        germanyCount++;
    }
}
Console.WriteLine("You've played Russian vehicles {0} times and German vehicles {1} times!", russiaCount, germanyCount);

这很好用,谢谢。我不知道文件。包含是一件事!了解lol很有用这很好用,谢谢。我不知道文件。包含是一件事!了解lol很有用