Java正则表达式-在一个输出字符串中匹配多个URL

Java正则表达式-在一个输出字符串中匹配多个URL,java,regex,Java,Regex,我有这个字符串: jwplayer("vplayer").setup({sources:[{file:"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmtbfbdks3bqofp5s6incq/v.mp4",label:"720p"},{file:"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmt2xbbks3bqofaojtzsgq/v.mp4"

我有这个字符串:

jwplayer("vplayer").setup({sources:[{file:"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmtbfbdks3bqofp5s6incq/v.mp4",label:"720p"},{file:"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmt2xbbks3bqofaojtzsgq/v.mp4",label:"360p"}],image:"https://v5.vidhd.net/i/01/00007/vdachffyt692.jpg"
我只想获取两个URL,即
文件:
之后的URL。 所需的输出
字符串
应如下所示:

https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmtbfbdks3bqofp5s6incq/v.mp4, https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmt2xbbks3bqofaojtzsgq/v.mp4
我怎样才能在java中得到这个

我尝试过这个正则表达式:
“file:\”(.*)\”
,但即使我将
matcher.find()
放在while循环中,也只得到了第一个url。 编辑: 这个正则表达式与@azro答案中的正则表达式同样适用。我的问题是while循环中的一些代码在一次迭代后抛出错误并停止循环(多亏了@pafau_k)。
很抱歉给您带来不便。

要获取URL,请使用类似此文件的简单正则表达式:“(https.*?”)将起作用,
*?
意味着尽可能少的URL,以便在第一次引用后停止

String content = "jwplayer(\"vplayer\").setup({sources:[{file:\"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmtbfbdks3bqofp5s6incq/v.mp4\",label:\"720p\"},{file:\"https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmt2xbbks3bqofaojtzsgq/v.mp4\",label:\"360p\"}],image:\"https://v5.vidhd.net/i/01/00007/vdachffyt692.jpg\"";

Matcher m = Pattern.compile("file:\"(http.*?)\"").matcher(content);
while(m.find())
    System.out.println(m.group(1));
要同时收集的流版本

String res = Pattern.compile("file:\"(http.*?)\"")
                    .matcher(content)
                    .results()
                    .map(r -> r.group(1))
                    .collect(Collectors.joining(" "));

System.out.println(res); // https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmtbfbdks3bqofp5s6incq/v.mp4 https://v5.vidhd.net/kmxsus4zpjumwmesrlwey575ndnsv4xwfgemw6pmt2xbbks3bqofaojtzsgq/v.mp4

你尝试过什么?当你手头有一个json时,也许只是解析json?这是一件事,另一件事:到目前为止你都尝试了什么?你被困在哪里?你至少试过了吗?我试过这个正则表达式:“file:\”(.*)\”,但我只得到了第一个url,即使我将matcher.find()放在while循环中。这是一个很好的正则表达式(甚至比答案中的正则表达式更好,因为它还可以找到https协议以外的内容)。它对我来说是正确的,也许把你的代码和循环一起发布(编辑问题),这样我们就可以发现错误了?或者从azro的答案中复制while循环,这应该可以很好地工作。Yiu说想要文件后面的URL:但后面是引号“,这是URL的一部分吗?URL验证是什么需要?看起来不是这样。试试findall things
(?