Фильтр расширения файла Regex - PullRequest
1 голос
/ 27 апреля 2010

Я пытаюсь создать регулярное выражение, которое будет принимать все файлы, которые не имеют списка расширений. В частности, я пытаюсь отфильтровать имена файлов, заканчивающиеся на .csv

Я просмотрел около часа и не смог этого понять. Я использую .NET Regex.

Ответы [ 3 ]

4 голосов
/ 27 апреля 2010

Следующее должно сделать трюк. Я только что проверил это с .net.

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

Не забудьте включить IgnoreCase RegexOptions , чтобы сделать его нечувствительным к регистру.

1 голос
/ 27 апреля 2010

Если вы используете .Net 3.5 или выше, это решение без регулярных выражений должно работать:

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

var filteredFiles = files.Where(f => f.Extension != "csv");
0 голосов
/ 27 апреля 2010
        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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...