Получить все цифры между двумя словами с помощью регулярного выражения - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Задача следующая: с помощью одной регулярки из текста такого вида:
oooooostart1,2.3ooooo4,5ooo6oo7start8,9o
достать все цифры, которые находятся между start и o. Разделитель - запятая или точка. Групп start-o может быть хоть сколько, цифр в группах - хоть сколько. (результат здесь будет 1 2 3 8 9) Похожие штуки возвращают только одно значение:
start(?:\d|\.|,|)*(\d)(?:\.|,|o|\d)*o

Решение задачи: «Получить все цифры между двумя словами с помощью регулярного выражения»

textual
Листинг программы
string str = @"oooooostart1,2.3ooooo4,5ooo6oo7start8,9oooostart65,13,25oo";
List<int> Numbers = new List<int>();
int start = 1;
int end = 0;
while (start - end != 0)
{
    start = str.IndexOf("start", end);
    if (start == -1) 
        break;
    start += 5;
    end = str.IndexOf("o", start);
    if (end == -1)
        break;
 
    string[] nums = str.Substring(start, end - start).Split(new char[] { ',', '.' });
    foreach (string num in nums)
    {
        int val;
        if (Int32.TryParse(num, out val))
            Numbers.Add(val);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы