По сути, у меня есть строка для интерполяции: Log_{0}.txt и {0} заменяется целым числом во время другого процесса. Таким образом, результаты могут быть чем-то вроде Log_123.txt или Log_53623432.txt.
Я пытаюсь использовать string.Format() и заменить {0} регулярным выражением, которое проверяет числа. В конце концов, я хочу иметь возможность вытащить и эти числа.
Я пробовал несколько разных вариантов чего-то подобного, но мне не повезло:
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d$"));
Кроме того, вот код, проверяющий формат:
var fileNameFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));
var existingFiles = Directory.GetFiles("c:\\projects\\something");
foreach(var file in existingFiles)
{
var fileName = Path.GetFileName(file);
if (fileNameFormat.Match(fileName).Success)
{
// do something here
}
}





Вы забыли поставить квантификатор плюс +, может быть?
+ Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));
Проблема в вашем регулярном выражении. ^ утверждает начало строки и $ конец строки. Просто замените его на @"\d+", и он должен работать.
При желании вы можете использовать new Regex(string.Format("^Log_{0}.txt$", @"\d+"));, чтобы гарантировать, что никакие файлы, такие как asdffff_Log_13255.txt.temp, не совпадают.
Работал как шарм. Большое спасибо!
Не повезло с этим. Я обновил вопрос кодом, который использую для проверки регулярного выражения. Возможно проблема в нем.