Поиск файла по фильтру с регулярным выражением - PullRequest
1 голос
/ 20 апреля 2011

Мне нужно найти файл (ы), которые начинаются с символа "prft", имя этих файлов: "prft0000.140", "prft2100.140", "prft1258.140" ... и т. Д. И янеобходимо проверить, существует ли этот файл (ы) в определенном каталоге.Так что у меня есть это регулярное выражение для их поиска, но я не знаю, как написать фильтр для соответствия.

List<string> prftFiles = (new DirectoryInfo(filePath))
                        .GetFiles(".", SearchOption.AllDirectories)
                        .Where(a => Regex.IsMatch(a.Name, "prft[^*]$"))
                        .Select(fi => fi.Name)
                        .ToList();

это не работает "prft [^ *] $", так как же это ??

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

почему бы просто не сделать List prftFiles = (new DirectoryInfo(filePath)).GetFiles("prft*", SearchOption.AllDirectories)

1 голос
/ 20 апреля 2011

Это регулярное выражение, которое вы могли бы использовать

string pattern = @"^(prft\d{4}\.\d{3})$";

, но вы можете найти файлы по шаблону и *, как говорили другие парни, если вы хотите именно математику для 4-значных чисел.3 цифры, вы должны использовать регулярное выражение, потому что prft * найдет любые файлы с именем, начинающимся с prft

0 голосов
/ 20 апреля 2011

Вам на самом деле здесь не нужно использовать Regex, так как класс Directory имеет механизм поиска в выбранном вами шаблоне.

Directory.GetFiles("C:\SomeDirectory", "prft*");

Карта * соответствует чему угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...