我有一线的善良:
"B8&soundFile=http%3A%2F%2Fwww.example.com%2Faeero%2Fj34d1.mp3%2Chttp%3A%2F%2Fwww.example.com%2Faudfgo%2set4.mp3"
我是否可以使用正则表达式直接将http提取到mp3?
我曾尝试阅读正则表达式的文档但没有提到如何从http到mp3。有人可以帮忙吗?
答案 0 :(得分:1)
如果直接进行基于索引的String操作会更好。
String data = "B8&soundFile=http%3A%2F%2Fwww.example.com%2Faeero%2Fj34d1.mp3%2Chttp%3A%2F%2Fwww.example.com%2Faudfgo%2set4.mp3";
System.out.println(data.substring(data.indexOf("http"), data.indexOf(".mp3")));
输出
http%3A%2F%2Fwww.example.com%2Faeero%2Fj34d1
B8&soundFile=http%3A%2F%2Fwww.example.com%2Faeero%2Fj34d1.mp3%2Chttp%3A%2F%2Fwww.example.com%2Faudfgo%2set4.mp3
答案 1 :(得分:1)
我可能不会用正则表达式来做这件事。 URL解码它,通过令牌对其进行分解,然后使用Java's URL class解析它。
答案 2 :(得分:0)
以下应该这样做(假设您希望将http和mp3作为匹配的一部分):
.*(http.*mp3)
如果你只想要那之间的位:
.*http(.*)mp3
例如:
String input = "B8&soundFile=http%3A%2F%2Fwww.example.com%2Faeero%2Fj34d1.mp3%2Chttp%3A%2F%2Fwww.example.com%2Faudfgo%2set4.mp3";
Pattern p = Pattern.compile(".*(http.*mp3)");
Matcher m = p.matcher(input);
if (m.find()) {
System.out.println(m.group(1));
}
给我们
http%3A%2F%2Fwww.example.com%2Faudfgo%2set4.mp3
答案 3 :(得分:0)
尝试http.+?mp3