正则表达式java从字符串中提取余额

时间:2015-03-28 11:43:22

标签: java regex pattern-matching matcher

我有一个包含" Dear user BAL= 1,234/ "的字符串 我想使用正则表达式从String中提取1,234。它可以是1,231,23455,213500

final Pattern p=Pattern.compile("((BAL)=*(\\s{1}\\w+))");
final Matcherm m = p.matcher(text);
if(m.find())
    return m.group(3);
else
 return "";

返回3 我应该做什么正则表达式?我是正则表达式的新手。

2 个答案:

答案 0 :(得分:1)

您在正则表达式中搜索单词字符\w+,但是您应该使用\d+搜索数字。

另外还有逗号,所以你也需要匹配它。

我用

/ BAL = \ S([\ d,] +(?= /)。 /

作为模式并获取结果组中的数字。

说明: .*之前匹配任何内容 BAL=匹配字符串“BAL =” \s匹配空格 (开始匹配组 [\d,]+匹配每个数字或逗号一次或多次 (?=/)只有在后面跟一个斜线才匹配前者 )结束匹配组 .*匹配任何内容

这是不可测试的,但它应该像这样工作:

final Pattern p=Pattern.compile(".*BAL=\\s([\\d,]+(?=/)).*");
final Matcherm m = p.matcher(text);
if(m.find())
    return m.group(1);
else
 return "";

根据online tester,上面的模式匹配文字:

BAL= 1,234/

答案 1 :(得分:0)

如果不必通过正则表达式提取它,您可以这样做:

// split on any whitespace into a 4-element array
String[] foo = text.split("\\s+");  
return foo[3];