У меня есть строки регулярных выражений, которые я хотел бы передать другим методам внутри массива (или какой-либо другой коллекции).Сохранение строк шаблонов регулярных выражений в массиве
Основываясь на комментариях, мой первоначальный вопрос был недостаточно ясным. Вот блок-тест, который точно объясняет, что я пытаюсь сделать.
Короче говоря, я пытаюсь заменить подстроку (на основе шаблона регулярного выражения) другим шаблоном регулярного выражения.
var mainPattern = @"\{[\w]*\}";
string replacePattern = @"\d{4}";
var patternArray = new string[] { replacePattern };
// patternArray[0] == "\\d{4}"
string input = "fd/{ddf}/dfdf";
string expected = @"fd/\d{4}/dfdf";
var match = Regex.Match(input, mainPattern);
// match.Value == "{ddf}"
var output = Regex.Replace(input, match.Value, patternArray[0]);
// output == "fd/\\d{4}/dfdf"
Assert.AreEqual(expected, output);
Проблема заключается в конечной продукции, где она содержит двойную обратную косую черту (потому что это, как заменить строку выглядит).
Надеюсь, проблема станет более ясной.
Я думаю, что я слишком много усложняю. Я не знаком со всеми функциями Regex?
' "\\" и' @ "\" 'одинаковы. 'string regex = @" \ d {4} ";' является вполне допустимым регулярным выражением. –
Альтернативно, вы можете использовать массив Regex. – Jacob
Я думаю, что строка просто преобразуется из стенографической строки в обычную, чтобы быть сохраненной в массиве как строка. Я не думаю, что это вызывает вашу проблему. Пожалуйста, покажите полный код, потому что 'Regex.Replace (ввод строки, строковый шаблон, замена строки)' Я не уверен, что это соответствует вашему 'Regex.Replace (inputstring, соответствует [i] .Value, patterns [i]) ' – stema