我想获取包含在文件夹中的所有.xlsx文件,但以#开头的文件除外。
我使用了以下正则表达式,但它仍无法正常工作。
有人可以帮忙吗?
var fileNames = GetFileNames(folder).Where(file => !Regex.IsMatch(Path.GetFileName(file), "^[~]+.xlsx"));
答案 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)
答案 4 :(得分:0)
您首先^
字符表示字符串的开头,而不是否定~
的存在。此外,您必须使用反斜杠(.
)转义\
之类的特殊字符。
正确的代码是:
var fileNames = GetFileNames(folder).Where(file => !Regex.IsMatch(Path.GetFileName(file), "^[^~]+\.xlsx"));
在代码中使用之前,使用在线工具测试正则表达式很有用。我使用regex101。