Задать вопрос
@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;
        }
  • Вопрос задан
  • 508 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Яндекс Практикум
    Продвинутая разработка на C# и .NET
    5 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unity + ИИ
    6 месяцев
    Далее
Решения вопроса 1
@RoadToTheHell Автор вопроса
Cпасибо, понял, резюмирую:
1) Если необходимо убрать скобки через Regex.Replace, то к параметрам pattern нужно добавлять:
@"\("
и
@"\)"

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

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

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

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