如何使用正则表达式查找多个匹配的数字
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+ 位数。
我正在尝试使用正则表达式从以下字符串中分离数据:
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+ 位数。