我有一个包含" Dear user BAL= 1,234/ "
的字符串
我想使用正则表达式从String中提取1,234
。它可以是1,23
,1,2345
,5,213
或500
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
我应该做什么正则表达式?我是正则表达式的新手。
答案 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];