正则表达式 java 从字符串中提取余额
Regular expression java to extract the balance from a string
我有一个包含 " 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 "";
这个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];
我有一个包含 " 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 "";
这个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];