如何使用正则表达式查找多个匹配的数字

How to find more than one match of numbers utilizing regex

我正在尝试使用正则表达式从以下字符串中分离数据:

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 的完全匹配和 11.7310 的第 1 组匹配,但我不知道如何匹配其他两个数据点。

我正在使用 PCRE (PHP) 创建我的表达式。

您可以使用

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

参见regex demo

详情

  • (?:\G(?!^)|\bC2) - 上一个成功匹配的结尾或 C2 整个单词
  • \s+ - 1+ 个空格
  • \K - 匹配重置运算符丢弃匹配内存缓冲区中到目前为止匹配的所有文本
  • \d* - 0+ 位
  • \.? - 一个可选的点
  • \d+ - 1+ 位数。