我是Regex和C#的新手。
我正在尝试构建一个遍历文件列表的工具,然后重新启动文件的名称(如果它包含某个模式),我使用下面的块来浏览列表
var queryMatchingFiles =
from file in fileList
where file.Extension != ".dll" && file.Extension != ".pdb"
let fileText = File.ReadAllText(file.FullName)
let matches = Regex.Matches(fileText, pattern, RegexOptions.IgnoreCase)
where matches.Count > 0
select new {
name = file.FullName,
matchedValues =
from Match match in matches
select match.Value
};
现在文件中pattern
的输入是.htc
,我知道正则表达式中的一个点表示任何字母,我试图确保模式被强制为{{ 1}}
.htc
或
pattern = @"\b" + pattern + @"\b";
它仍然不接受pattern = string.Format(@"\b" + pattern + @"\b");
中的点,任何想法如何推翻这个问题?
编辑:我不是在寻找文件扩展名,我想要做的是扫描HTML和文本文件内容,看看它是否包含某些单词,如.htc
编辑2:谢谢你们的答案,.htc
正是我所寻找的!
答案 0 :(得分:1)
特殊的正则表达式字符必须转义,如果它们的意思是。
pattern = @"\.htc";
您可以使用
自动执行此操作pattern = Regex.Escape(".htc");
如果您只需要不区分大小写,请使用此解决方案"包含"功能:https://stackoverflow.com/a/15464440/880990