如何编写Regex匹配以预定义字符开头的数字组中的第二个数值
问题原因分析
你当前使用的正则TOTAL[ ]*([^\s]+)[ ]* 仅会捕获TOTAL前缀后第一个非空白字符序列,所以只能拿到第一个数值600,00,你反馈仅得到600大概率是正则运行环境默认将逗号识别为特殊分隔符导致的截断。
调整后的正则方案
通用场景写法(匹配任意空白分隔的第二个字段)
使用非捕获逻辑跳过第一个字段,直接捕获第二个目标字段:
TOTAL\s+\S+\s+(\S+)
规则说明:
TOTAL精准匹配固定前缀\s+匹配前缀后1个及以上的空白字符\S+匹配第一个不需要的数值字段(不捕获)\s+匹配第一个字段和目标字段之间的空白(\S+)捕获第二个非空白序列,即你需要的571,43
精确匹配写法(仅匹配数字+逗号格式的字段)
如果你的场景中所有数值都是数字+逗号的格式,可以加规则过滤异常内容:
TOTAL\s+[\d,]+\s+([\d,]+)
该写法会自动跳过非数字、逗号组成的异常字段,适配性更强。
验证结果
在测试字符串TOTAL 600,00 571,43 28,57中运行上述正则,捕获组1的输出结果即为571,43,完全符合需求。
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

