c#不正确的正则表达式
本文关键字:正则表达式 不正确 | 更新日期: 2023-09-27 18:16:36
我要搜索所有名称为:Resources.Designer的文件。不是,Settings.Designer.pas。
我的代码行是:
if (myString.Equals("*.Designer.pas"))
,但它没有进入if块。为什么?
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
的任何内容,其中foo
和bar
表示任何字符串。如果您想显式地匹配任何以.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
来使用当前目录