如何编写正则表达式匹配目标字符串中的第二个数值
解决方案
你的原有正则的问题在于:只捕获了第一个跟在Total关键词后的数值,自然匹配到的是171,11。
你可以使用如下正则完成匹配,目标值会出现在第1个捕获组中:
Total\s*\d+(?:,\d+)?\s*RON\s*(\d+(?:,\d+)?)
正则逻辑说明
- 先匹配到跟数值关联的
Total关键词 - 再匹配第一个数值
171,11和其后的RON以及中间的空白字符,跳过这部分不需要的内容 - 最后捕获后续的第二个数值,也就是你需要的
32,51
如果希望匹配逻辑更贴合字段含义(你需要的是TVA对应的金额),也可以使用更精准的写法:
TVA.*?(\d+(?:,\d+)?)\s*RON
该写法会直接定位到TVA字段后出现的第一个带RON标识的数值,不受后续字段变动影响。
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

