2 qq 21194023 qq_21194023 于 2016.03.10 11:39 提问

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]执行匹配,但是水平有限,希望有前辈能指点。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
正则表达式-匹配货币
最近我在学习正则表达式,写了匹配货币的: ☆有两种验证方法: 第一种货币中不带“,“ ((^[-]?([1-9]\d*))|^0)(\.\d{1,2})?$|(^[-]0\.\d{1,2}$) 第二种货币中能带千分符(英式逗号)时必须带上 (^[-]?[1-9]\d{0,2}($|(\,\d{3})*($|(\.\d{1,2}$))))|((^[0](\.\d{1,2})?)|(^[
和钱有关的那些事-java中的数字精确表示
前言        一日,一个外国人来到我大中华,操着一口纯正无比的外国腔。然而,我们都听不懂啊!这个地方出现了一个问题,那就是语言不通。实际上,在数字的表示上也存在着类似的问题!例子        大家看看下面的代码public static void main(String[] args) { double s = 1D; System.out.println(s
Java通过正则表达式提取数字串或者字符串
1。通过rex:("\\d+")来提取字符串 Scanner sc = new Scanner(System.in); String[] a = sc.nextLine().split("\\d+"); for(String s : a){ System.out.print(s+" "); } 2。通过rex: [^0-9] 来提取数字 Scanner sc
java格式化数字、货币、金钱
网上摘来的,以后可能会用到  java开发中经常会有数字、货币金钱等格式化需求,货币保留几位小数,货币前端需要加上货币符号等。可以用java.text.NumberFormat和java.text.DecimalFormat实现。 1 第一种:比如网上交易系统,数字保留4位小数: 2 public static void main(String[] args){ 3 Numbe
java正则表达式匹配所有数字
用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9]) ( [1-9] :匹配1~9的数字; \d :匹配数字,包括0~9; * :紧跟在 \d 之后,表明可以匹配零个及多个数字; \. :匹配小数点; ? :紧跟在 \. 之后,表明可以匹配零个或一个小数点; 0 :匹配一个数字0; ) 其中的 [1-9]\d*\.?\d* 用以匹配诸如:1、23
js,正则实现金钱格式化
js,正则实现金钱格式化
js将number数值转化成为货币格式,货币格式化,金钱过滤器,货币过滤器,vue货币过滤金钱过滤全局和局部两种实现方式
js中使用 js代码 const digitsRE = /(\d{3})(?=\d)/g function currency (value, currency, decimals) { value = parseFloat(value) if (!isFinite(value) || (!value && value !== 0)) return '' currency = cu
Java 正则表达式 匹配括号中的数字
第一种:      String line = "+!!!0(100000000073);+!!!0(100000000071);";      String pattern = "(?<=\\()\\d+(?=\\))";      pattern = "(\\d{16})";      Pattern r = Pattern.compile(pattern);        M...
java正则表达式匹配所有数字,包括带小数点的数字
用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9]) ( [1-9] :匹配1~9的数字; \d :匹配数字,包括0~9; * :紧跟在 \d 之后,表明可以匹配零个及多个数字; \. :匹配小数点; ? :紧跟在 \. 之后,表明可以匹配零个或一个小数点; 0 :匹配一个数字0; ) 其中的 [1-9]\d*\.
JAVA的货币类型BigDecimal
最近开发涉及到货币问题,本人对JAVA的理解是用double是绝对不行的,因为很多语言包括JAVA都是采用BCD来做高精度计算的,BCD是精确的但不准确,下面举个例子 public class test{ public static void main(String [] args){        System.out.println(0.05+0.01); } } 控制台打印:0.