Регулярное выражение для извлечения всех чисел - C#
Формулировка задачи:
Есть текст такого формата:
Paris:Jan 0.0, Feb 1.1, Mar 2.2...
Lima:Jan 3.3, Feb 4.4, Mar 5.5...
Moscow:Jan 6.6, Feb 7.7, Mar 8.8...
Надо "вырезать" все числа, относящиеся к определенному городу, т.е. располагающиеся между его названием и переводом строки. Я пытался написать регулярное выражение, но почему-то все время вижу только одну группу, то первую, то последнюю. Вот так писал, например: ^Lima:(?:\w{3}\s([.0-9]+)[,\s\n]+){12}, выдает только последнюю группу.
Как проще всего извлечь все числа в данном случае? Считаем, что строка всегда корректна.
Решение задачи: «Регулярное выражение для извлечения всех чисел»
textual
Листинг программы
- public static double[] ExtractNumbers(string town, string text)
- {
- string pattern = @"(?<=" + town + @":.*)\d+(\.\d+)?";
- return Regex.Matches(text, pattern)
- .Cast<Match>()
- .Select(m => double.Parse(m.Value, CultureInfo.InvariantCulture))
- .ToArray();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д