我有一个包含" Dear user BAL= 1,234/ "
的字符串。
我想使用正则表达式从字符串中提取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
。我应该做什么正则表达式?我是新来的正则表达式。
最佳答案
您在正则表达式中搜索单词字符\w+
,但应使用\d+
搜索数字。
此外,还有逗号,因此您也需要将其匹配。
我会用
/.BAL=\s([\d,]+(?=/)./
作为模式,仅获取结果组中的数字。
说明:.*
匹配任何内容BAL=
匹配字符串“ BAL =”\s
匹配空白(
开始匹配组[\d,]+
一次或多次匹配每个数字或逗号(?=/)
仅在后跟斜杠时匹配前者)
结束匹配组.*
匹配任何盗窃
这是untestet,但它应该像这样工作:
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/