Java 在流上应用正则表达式以提取字符串
我们正在使用一个RESTAPI调用,该调用返回一个非常大的字符串。我们正在表演Java 在流上应用正则表达式以提取字符串,java,regex,http,stream,Java,Regex,Http,Stream,我们正在使用一个RESTAPI调用,该调用返回一个非常大的字符串。我们正在表演 httpget.getResponseBodyAsString(); 获取REST调用返回的字符串。然后我们在这个字符串上应用正则表达式来提取我们需要的子字符串。当REST调用返回的字符串很大时,JVM就会面临内存不足的问题 我们还可以使用 httpget.getResponseBodyAsString(); 但是,是否可以在流上应用正则表达式并提取我们需要的字符串?前面的答案显示了几个选项: 我认为第一个答
httpget.getResponseBodyAsString();
获取REST调用返回的字符串。然后我们在这个字符串上应用正则表达式来提取我们需要的子字符串。当REST调用返回的字符串很大时,JVM就会面临内存不足的问题
我们还可以使用
httpget.getResponseBodyAsString();
但是,是否可以在流上应用正则表达式并提取我们需要的字符串?前面的答案显示了几个选项:
我认为第一个答案(上面)提到的可能是一个有趣的选择。字符串有多大?我不期望
OutOfMemory
即使对于1mb字符串数据@Reddy也会出现,但是,它对我们来说确实如此;要求首先将输入写入文件(当然是字节,而不是字符),然后在文件上使用正则表达式。不过,如果你有oom,这意味着你有很多并发请求。只是出于好奇,谁在写正则表达式,他们知道自己在做什么吗?你应该确保正则表达式尽可能高效,因为你可能没有多少回旋余地。这正是我所想的!我无法对此进行测试,但您应该能够直接从getResponseBodyAsStream()
返回的流创建扫描仪。您也可以指定编码。