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

如何编写Regex匹配括号内容及多个逗号分隔的整数或浮点数

正则匹配解决方案

问题原因

你写的正则只能匹配到第一个数字,是因为标准正则的重复捕获组默认只会保留最后一次匹配的结果,单组重复捕获不会把所有匹配结果都存在分组列表里,这是正则引擎的通用特性。

方案1:全语言通用两步法(推荐)

适合Python、Java、JavaScript、Go等所有主流编程语言,逻辑简单易维护:

  1. 第一步先拆分括号内容和数字集合,使用正则:
    ^\((.*?)\)\s*([\d\s,.]+)$
    • 分组1提取到的就是括号内的文本内容
    • 分组2提取到的是所有数字组成的字符串(比如12.3,322.3, 213, 332.5)
  2. 第二步将分组2的内容用分隔符,\s*分割,就能得到所有的数字列表。

方案2:单正则实现(仅支持特定引擎)

如果你使用的是支持保留所有重复捕获结果的正则引擎(比如.NET、PCRE v2、PHP 8.0+等),可以直接用以下正则一次性提取所有结果:
^\((.*?)\)(?:[,\s]+(\d+(?:\.\d+)?))+$

匹配结果说明:

  • 第1组固定为括号内的文本内容
  • 第2组的所有捕获结果就是你需要的后续所有整数/浮点数,顺序和原字符串一致

数字匹配规则优化

你原来的数字匹配规则[0-9]+?[.]?[0-9]*存在边界问题,会匹配到123.这类末尾带小数点的非法格式,推荐替换为更严谨的\d+(?:\.\d+)?,只会匹配合法的整数(如213、3)和浮点数(如12.3、2.7)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:09