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

Python使用正则匹配实现按最多3个数字拆分逗号分隔字符串

你可以使用以下正则表达式实现需求:

import re
data = '5.2 -34 435, 34 2.908 3, 50 2 54 3, 40 50'
res = re.findall(r'[-+]?\d+(?:\.\d+)?(?:\s+[-+]?\d+(?:\.\d+)?){0,2}', data)

运行后得到的res就是你预期的输出:['5.2 -34 435','34 2.908 3','50 2 54','3','40 50']。

正则说明

  • 核心规则[-+]?\d+(?:\.\d+)?用于匹配单个合法数字,支持正负号、整数/小数格式
  • 后缀(?:\s+[-+]?\d+(?:\.\d+)?){0,2}表示当前数字后最多可以再跟2个带前置空格的数字,整体组合最多包含3个数字
  • 表达式会自动跳过逗号及逗号前后的无效字符,优先匹配最长的3个数字组合,超过3个的部分会自动拆分为下一个匹配项

原有正则的问题

你之前写的r"[-+A-z0-9.\s]{3}"是匹配连续3个符合规则的字符,并非按数字个数匹配,完全不符合需求逻辑。


内容的提问来源于stack exchange,提问作者Kosu K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 07:45:04