Получить все цифры между двумя словами с помощью регулярного выражения - C#
Формулировка задачи:
Добрый день!
Задача следующая: с помощью одной регулярки из текста такого вида:
достать все цифры, которые находятся между start и o. Разделитель - запятая или точка. Групп start-o может быть хоть сколько, цифр в группах - хоть сколько. (результат здесь будет 1 2 3 8 9)
Похожие штуки возвращают только одно значение:
oooooostart1,2.3ooooo4,5ooo6oo7start8,9o
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);
}
}