Регулярное выражение для извлечения всех чисел - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д