C# - 正则表达式,用于排除某些无效的文件

时间:2017-06-19 06:04:41

标签: c# regex file

我想获取包含在文件夹中的所有.xlsx文件,但以#开头的文件除外。

我使用了以下正则表达式,但它仍无法正常工作。

有人可以帮忙吗?

  var fileNames =  GetFileNames(folder).Where(file => !Regex.IsMatch(Path.GetFileName(file), "^[~]+.xlsx"));

5 个答案:

答案 0 :(得分:3)

将您的RegEx更改为以下内容:

^[~]+.*\.xlsx

您没有指定fileName可以在“〜”之后包含任何其他符号。 如果您有.xlsx错误,则必须\.xlsx。因为在第一种情况下它也会匹配axlsx

答案 1 :(得分:0)

我没有测试过,但试试这个:

 var fileNames =  GetFileNames(folder).Where(file => !Regex.IsMatch(Path.GetFileName(file), "^[~][.]{1,}.xlsx"));

答案 2 :(得分:0)

正则表达式应该至少为^[~]\w+.xlsx(如果你需要的话,还需要添加\ w +

答案 3 :(得分:0)

使用以下正则表达式:

^[^~].+\.xlsx$

此正则表达式在开头忽略~,否则匹配。

Demo

答案 4 :(得分:0)

您首先^字符表示字符串的开头,而不是否定~的存在。此外,您必须使用反斜杠(.)转义\之类的特殊字符。

正确的代码是:

var fileNames =  GetFileNames(folder).Where(file => !Regex.IsMatch(Path.GetFileName(file), "^[^~]+\.xlsx"));

在代码中使用之前,使用在线工具测试正则表达式很有用。我使用regex101