You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取字符串中被空格包围的带符号浮点数?

提取字符串中被空格包围的带符号浮点数

问题场景

给定示例字符串:

str = '     area                                AMW1  =     93.3 m2 ';

需要从中仅提取被空格包围的带符号(可包含-)浮点数93.3。此前尝试的正则表达式\d+\.?\d*会错误匹配到AMW1里的1和m2里的2,无法满足需求。

可行解决方案

方案1:匹配被空格包裹的目标浮点数

使用带前后空格预查的正则表达式,精准锁定目标:

s = regexp(str,'(?<=\s)[-+]?\d+\.?\d*(?=\s)','match')

各部分含义:

  • (?<=\s):正向零宽断言,确保目标数前是空格
  • [-+]?:匹配可选的正负符号(支持负数或正数的符号标注)
  • \d+\.?\d*:覆盖常见浮点数格式,包括整数部分+可选小数点+可选小数部分
  • (?=\s):正向零宽断言,确保目标数后是空格

执行后会得到仅包含93.3的结果数组。

方案2:结合=的位置精准定位

如果目标浮点数固定出现在=之后,可利用这个结构缩小匹配范围,直接捕获目标:

matches = regexp(str,'=\s*([-+]?\d+\.?\d*)','tokens');
target_num = matches{1}{1};
  • =\s*:匹配=及其后的任意空格
  • ([-+]?\d+\.?\d*):用捕获组提取目标浮点数,通过tokens参数直接获取捕获内容

这种方式能彻底避开字符串中其他无关数字的干扰。

内容的提问来源于stack exchange,提问作者Robert Seifert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:15:33