正则表达式从带小数的文本中提取十进制数

rya*_*ner 4 regex formula google-sheets google-sheets-formula

我有一个简单的谷歌表格REGEXEXTRACT功能,可以从 NFL 线和上下线中提取数字。

问题是这样的:函数

=VALUE(REGEXEXTRACT(I3,"-*\d*.?\d+"))
Run Code Online (Sandbox Code Playgroud)

正确地从文本中提取 -13.5Line: GB -13.5 但是当我在文本上使用相同的函数时O/U: 51.5,它错误地提取了 51.0

我的正则表达式哪里失败了?

Tim*_*sen 6

当前正则表达式的问题在于,正如所写的,在第二种情况下,模式的前导部分不匹配任何内容,只有最后一个\d+匹配整数51请参阅此处的演示)。您会51.0在 Excel 电子表格中看到,因为小数部分默认为零。请改用此正则表达式模式:

-?\d+(?:\.\d+)?
Run Code Online (Sandbox Code Playgroud)

演示