2 qq 21194023 qq_21194023 于 2016.03.10 14:44 提问

java 使用正则,匹配数据中的欠款金额

A文件数据:
1001分店20121231,元旦之际祝您新年快乐,身体健康,万事如意.
您共欠担保公司¥103,959.50元。请您尽快偿还欠款,以免扩大损失。
您的借款已逾期6天,欠款金额为1988.20元,逾期将影响信用记录,请即刻缴纳。
截止 2015年07月01日 您应还金额为:4128元。如有疑问,请联系王先生1101101010。
你好,截至到昨天夜里23:59,你欠款34532.32元,请您尽快偿还欠款,以免扩大损失。
你好,截至到昨天夜里23:59,你欠款:¥34532.32,请您尽快偿还欠款,以免扩大损失。
你好,截至到昨天夜里23:59,你欠款为34532.32元,请您尽快偿还欠款,以免扩大损失。
您好!截止2015年7月1日,您尚有逾期欠款45,987.89元未支付,请您登陆手机客户端进行查询。
本人之前的正则是这样的,因为数据中可能出现不止一个数字,因此需要将欠款金额的前后标志性词语一起匹配出来
String jq = "欠款金额为(.*?)元|欠还金额为(.*?)元|欠款:¥(.*?),|欠款总金额(.*?);|到期(.*?)元|到期本金(.*?)元|欠款合计金额为(.*?)元|欠款(.*?)元|累计欠款(.*?)。|Top50金额共(.*?)最长|欠款金额人民币:(.*?)元|共欠担保公司¥(.*?)元|尚有(.*?)元未支付|欠款为(.*?)元";

但是在匹配的时候有些相互冲突,
欠款(.*?)元
欠款:¥(.*?),
欠款为(.*?)元
导致匹配出的结果部分为null,部分不符合,输出是,希望输出group(1)+"\t"+group();
希望能够将(.*?)替换,用\d或者[0-9]执行匹配,但是水平有限,希望有前辈能指点。

2个回答

rui888
rui888   Ds   Rxr 2016.03.10 15:06

你需要结果是什么列出来吧。

qq_21194023
qq_21194023 比如说这条数据:你好,截至到昨天夜里23:59,你消费金额为:234.43元,欠款为34532.32元,请您尽快偿还欠款,以免扩大损失。 需要匹配出来的就是 “欠款为34532.32元” 中的34532.32
接近 2 年之前 回复
qq_21194023
qq_21194023 103,959.50 4128 34532.32 34532.32 34532.32 45,987.89 因为数据中可能出现不止一个金钱数字,因此需要将欠款金额的前后标志性词语一起匹配出来
接近 2 年之前 回复
qq_21194023
qq_21194023 依次是
接近 2 年之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.03.10 17:15

你的金额只有数字,点号
那么可以用

 [.0-9]+
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!