如何编写Regex匹配指定行中的最后一个数字
正则匹配解决方案
问题根因
你原来的正则Total(?:\s*(\d+(?:,\d+)?)){1}仅会匹配第一个紧跟Total关键词后的数字,因此拿到的是第一个金额171,11,不符合提取最后一个金额的需求。
可用正则方案
方案1:匹配行尾最后一个金额(无其他干扰行时优先用)
正则写法:(\d+,\d+)(?=\s*RON\s*$)
- 规则说明:
(\d+,\d+):匹配带逗号分隔的金额数字格式,结果存入捕获组1(?=\s*RON\s*$):正向预查,确认数字后跟随可选空白、RON标识、可选空白直到行末尾,确保仅匹配行的最后一个金额。
方案2:结合Total关键词匹配(避免其他无关行干扰)
正则写法:Total.*?(\d+,\d+)\s*RON\s*$
- 规则说明:
- 先定位到文本中第一个
Total关键词位置 .*?非贪婪匹配后续所有内容,直到找到行末尾最后一个符合格式的金额,结果存入捕获组1。
- 先定位到文本中第一个
验证结果
针对你提供的样例文本,两种方案的捕获组1输出均为目标值203,62。
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

