我在这里有一个模式,可以在逗号后找到整数。
我的问题是我的返回值位于新行中,因此该模式仅适用于新行。我该如何解决?我希望它能在每一行中找到模式。
感谢所有帮助:
url = new URL("https://test.com");
con = url.openConnection();
is = con.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
String responseData = line;
System.out.println(responseData);
}
pattern = "(?<=,)\\d+";
pr = Pattern.compile(pattern);
match = pr.matcher(responseData); // String responseData
System.out.println();
while (match.find()) {
System.out.println("Found: " + match.group());
}
这是作为字符串返回的响应:
test.test.test.test.test-test,0,0,0
test.test.test.test.test-test,2,0,0
test.test.test.test.test-test,0,0,3
这是打印输出:
Found: 0
Found: 0
Found: 0
问题在于构建String,您只分配了的最后一行BufferedReader
:
responseData = line;
如果您responseData
在尝试匹配之前就进行打印,则会看到它只是一行,而不是您所期望的。
由于您使用来打印缓冲区的内容System.out.println
,因此您可以看到整个结果,但是保存到responseData
的实际上是最后一行。
您应该使用StringBuilder
构建整个字符串:
StringBuilder str = new StringBuilder();
while ((line = br.readLine()) != null) {
str.append(line);
}
responseData = str.toString();
// now responseData contains the whole String, as you expected
提示:使用调试器,它将使您更好地理解代码,并可以帮助您更快地发现错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句