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

Regular expression java to extract the balance from a string

我有一个包含 " Dear user BAL= 1,234/ ".
的字符串 我想使用正则表达式从字符串中提取 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 "";

这个returns3.
我应该制作什么正则表达式?我是正则表达式的新手。

您在正则表达式中搜索单词字符 \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/

如果不需要用正则表达式提取,你可以简单地做:

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