Как найти более одного совпадения чисел, используя регулярные выражения - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь выделить данные из следующей строки с использованием выражения регулярного выражения:

Ethane, C2 11.7310 3.1530 13.9982 HV, Dry @ Base P,T 1432.00

Конечная цель состоит в том, чтобы иметь возможность выделить три средние точки данных как отдельные значения 11.7310, 3.153, 13.9982

Кодовое выражение, с которым я сейчас работаю, выглядит следующим образом:

(?<=C2 )(\d*\.?\d+)

Это дает полное совпадение 11.7310 и совпадение группы 1 11.7310, но я не могу понять, как сопоставить две другие точки данных.

Я использую PCRE (PHP) для создания своего выражения.

1 Ответ

1 голос
/ 15 января 2020

Вы можете использовать

(?:\G(?!^)|\bC2)\s+\K\d*\.?\d+

См. Демоверсию regex .

Подробности

  • (?:\G(?!^)|\bC2) - либо конец предыдущего успешного совпадения, либо C2 целое слово
  • \s+ - 1+ пробелов
  • \K - оператор сброса совпадения, отбрасывающий весь текст, который до сих пор соответствовал буфер памяти совпадений
  • \d* - 0+ цифр
  • \.? - необязательная точка
  • \d+ - 1+ цифр.
...