.net 正则表达式文件扩展名过滤器

.net 正则表达式文件扩展名过滤器,.net,regex,.net,Regex,我正在尝试创建一个正则表达式,它将接受所有没有扩展名列表的文件。特别是,我试图过滤掉以.csv结尾的文件名 我已经浏览了一个小时,没能弄明白这一点。我使用的是.NET正则表达式。下面应该可以做到这一点。我刚刚用.net测试了一下 ^.*\.(?!csv).*$ 请确保包含IgnoreCase,使其不区分大小写。下面的步骤应该可以做到这一点。我刚刚用.net测试了一下 ^.*\.(?!csv).*$ For Each r As String In _invalidFileExp

我正在尝试创建一个正则表达式,它将接受所有没有扩展名列表的文件。特别是,我试图过滤掉以.csv结尾的文件名


我已经浏览了一个小时,没能弄明白这一点。我使用的是.NET正则表达式。

下面应该可以做到这一点。我刚刚用.net测试了一下

^.*\.(?!csv).*$

请确保包含IgnoreCase,使其不区分大小写。

下面的步骤应该可以做到这一点。我刚刚用.net测试了一下

^.*\.(?!csv).*$
        For Each r As String In _invalidFileExpressions
            If bValid Then
                bValid = Not Regex.IsMatch(FileName, r, RegexOptions.IgnoreCase)
            End If
        Next
确保包含IgnoreCase以使其不区分大小写

        For Each r As String In _invalidFileExpressions
            If bValid Then
                bValid = Not Regex.IsMatch(FileName, r, RegexOptions.IgnoreCase)
            End If
        Next
r将被定义为.net正则表达式,一些示例:

        ".*\.csv" 
        ".*d\.txt" 
        "\d\d_\d{8}[dmysDMYS].txt" 
        ".*(batch).*\.txt"
        ".*(elvis).*\.txt"
        ".*(anal).*\.txt"
        ".*(monthlystats)\.txt"
        ".*(rx)\.txt"
        ".*(BAD|bad)\.txt"
        ".*(mm)\.txt"
        ".*(flu)\.txt"
r将被定义为.net正则表达式,一些示例:

        ".*\.csv" 
        ".*d\.txt" 
        "\d\d_\d{8}[dmysDMYS].txt" 
        ".*(batch).*\.txt"
        ".*(elvis).*\.txt"
        ".*(anal).*\.txt"
        ".*(monthlystats)\.txt"
        ".*(rx)\.txt"
        ".*(BAD|bad)\.txt"
        ".*(mm)\.txt"
        ".*(flu)\.txt"

如果您使用的是.Net 3.5或更高版本,此非正则表达式解决方案应该可以:

var root = new DirectoryInfo(@"C:\");
var files = root.GetFiles();

var filteredFiles = files.Where(f => f.Extension != "csv");

如果您使用的是.Net 3.5或更高版本,此非正则表达式解决方案应该可以:

var root = new DirectoryInfo(@"C:\");
var files = root.GetFiles();

var filteredFiles = files.Where(f => f.Extension != "csv");

非常感谢,这非常好用!出于好奇,为什么在结尾没有。*的情况下它不工作?操作符说“包括任意数量的X或根本没有”。在本例中,X是一个“.”,因此它是任意字符。如果您需要某种类型的扩展名,请将“*”切换为“+”,如果在文件扩展名之前还有一个句点,则此操作将失败。(例如myFile.extension.txt)非常感谢,这非常好用!出于好奇,为什么在结尾没有。*的情况下它不工作?操作符说“包括任意数量的X或根本没有”。在本例中,X是一个“.”,因此它是任意字符。如果您需要某种类型的扩展名,请将“*”切换为“+”,如果在文件扩展名之前还有一个句点,则此操作将失败。(例如,myFile.extension.txt)这是一个很好的示例,但实际上是文本文件中没有可用拆分字符串的文件名列表。这是一个很好的示例,但实际上是没有可用拆分字符串的文本文件中的文件名列表。