Регулярное выражение для извлечения всех чисел - 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();
    }

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


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

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

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