如何使用可选的小数分隔符解析双精度

本文关键字:分隔符 双精度 小数 何使用 | 更新日期: 2023-09-27 18:33:34

我想用这样的单位解析数字

3cm
3.44 cm
12,33  mm

以下表达式完全符合我的需求

(([0-9]*(?:[,.]?[0-9]*?))['s]*(cm|mm))

但问题是它也匹配类似的东西

cm 22.1   cm

在这种情况下,它忽略数字并仅匹配第一个厘米,如何忽略第一个厘米?

如何使用可选的小数分隔符解析双精度

您可以将第一个数字匹配量词从零或多个 (*) 更新为一个或多个 (+):

(([0-9]+(?:[,.]?[0-9]*?))['s]*(cm|mm))
'd+(?:[.,]'d+)?'s*(?:cm|mm)

试试这个。请参阅演示。

https://regex101.com/r/qJ8qW5/2

就像其他人说的那样,您需要将量词*更改为+其中*表示零或更多,+表示一个或多个。如果您还想匹配像 12,533.45 cm 这样的数字,那么您可以使用下面的正则表达式。

[0-9]+(?:,[0-9]+)*(?:'.[0-9]+)?'s*(?:cm|mm)

演示