c#不正确的正则表达式

本文关键字:正则表达式 不正确 | 更新日期: 2023-09-27 18:16:36

我要搜索所有名称为:Resources.Designer的文件。不是,Settings.Designer.pas。

我的代码行是:

if (myString.Equals("*.Designer.pas"))

,但它没有进入if块。为什么?

c#不正确的正则表达式

if (myString.EndsWith(".Designer.pas"))

我想你也可以使用:

if (myString.EndsWith(".Designer.pas", 
                      StringComparison.InvariantCultureIgnoreCase))

在正则表达式中,.是一个特殊字符,表示'匹配任何字符'。如果要显式匹配句号,则必须对其进行转义。这应该可以工作:

string pattern = @".*'.Designer'.pas";
if (Regex.IsMatch(myString, pattern))

有关更多信息,请查看这篇msdn文章。然而,上述内容将匹配形式为foo.Designer.pas.bar的任何内容,其中foobar表示任何字符串。如果您想显式地匹配任何以.Designer.pas结尾的文件,您应该使用这样的内容:

string pattern = @".*'.Designer'.pas$";
if (Regex.IsMatch(myString, pattern))

$将指示regex引擎匹配该子字符串,并确保它是字符串的最后一部分。

你需要

Regex.IsMatch(str, "'.Designer'.pas$")

确保给定的字符串以". designer .pas"结尾。

因为你引用的是字符串"*. designer .pas"。这可能不存在。我建议你试着搜索"。designer"。

如果您正在寻找文件系统上匹配某种模式的文件列表,您可以使用Directory.GetFiles:

foreach(string f in Directory.GetFiles("C:''YourPath", "*.Designer.pas"))
{
    ...
}

您也可以使用.而不是C:''YourPath来使用当前目录