@RoadToTheHell

Не работает Regex.Match C#. В чем ошибка?

Метод получает на вход строку из букв и часть этой строки, которая должна раскрыться уже без скобок. В этой строке могут быть сокращения по типу "(3а)", что раскрывается как "ааа". Это и должен сделать метод.
Суть в том, что при поиске через Regex.Match возвращается пустое значение. А почему- понять не могу.
Так-же, почему-то в Replace скобки игнорируют я, и не удаляются (они находятся в таргете)
static string Zamena(string stroka,string target) // stroka - входная строка, в которой надо раскрыть target
        {
            string to_replace= ""; // то, на что в итоге будет заменен target
            string celb = ""; 
            Match find = Regex.Match(stroka, @"([0-9]*)");
            int kolvo = Convert.ToInt32(find.Groups[1].Value); // количество повторений
            find = Regex.Match(stroka, @"(\w*)");
            celb = find.Groups[1].Value; // то, что повторяется
            for (int i = 1;i<=kolvo;i++)
            {
                to_replace += celb;
            }
            stroka = Regex.Replace(stroka, target,to_replace);
            return stroka;
        }
  • Вопрос задан
  • 472 просмотра
Решения вопроса 1
@RoadToTheHell Автор вопроса
Cпасибо, понял, резюмирую:
1) Если необходимо убрать скобки через Regex.Replace, то к параметрам pattern нужно добавлять:
@"\("
и
@"\)"

Соответственно итоговый паттерн:
@"\(" + "какое-то дефолтное выражение" + @"\)"

Скобки в самом дефолтном выражении (если они вокруг него) будут игнорироваться
2) Не понял, почему так, но скобки шаблонном регулярном выражении работают некорректно. Необходимо тупо выделять каждую скобку, которая может встретиться
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы