我有一个包含以下数据的字符串:
String data = "Some information and then value1=17561.2 and then value2=15672.2"
如何在Java中最有效地返回17561.2?
String queryString = "value1";
while data.charAt(outputStr.indexOf(queryString)+queryString.length()) is a number
-save it to an array
which you later convert to a String
elihw
这似乎有点令人费解。
这里的正则表达式是完美的吗?我如何制作正则表达式来做到这一点?
答案 0 :(得分:1)
要在字符串中查找十进制数(或int),可以使用正则表达式
[+-]?(?:\d*\.\d+|\d+)
这不会以指数表示法找到浮点数(1.2E15或其他一些)。
<强>解释强>
[+-]? # optional sign
(?: # either
\d*\.\d+ # float with optional integer part
| # or
\d+ # just integer
)
在Java中(迭代字符串中的所有匹配项):
Pattern regex = Pattern.compile("[+-]?(?:\\d*\\.\\d+|\\d+)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group()
// match start: regexMatcher.start()
// match end: regexMatcher.end()
}