Java 从url提取路径值的正则表达式问题
我正在尝试从url提取视频idJava 从url提取路径值的正则表达式问题,java,regex,Java,Regex,我正在尝试从url提取视频id http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6 我使用的模式.compile(“/v/([^&]*)”)得到null和 如果我使用Pattern.compile(“/v/([^/]*)”)我会得到以下输出 Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6 如何单
http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6
我使用的模式.compile(“/v/([^&]*)”)
得到null和
如果我使用Pattern.compile(“/v/([^/]*)”)
我会得到以下输出
Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6
如何单独提取Ig1WxMI9bxQ
import java.util.regex.*;
class Main
{
public static void main(String[] args)
{
String txt="http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
String re1=".*?"; // Non-greedy match on filler
String re2="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var
String re3=".*?"; // Non-greedy match on filler
String re4="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var
String re5=".*?"; // Non-greedy match on filler
String re6="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var
String re7=".*?"; // Non-greedy match on filler
String re8="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var
String re9=".*?"; // Non-greedy match on filler
String re10="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var
String re11=".*?"; // Non-greedy match on filler
String re12="((?:[a-z][a-z0-9_]*))"; // Variable Name 1
Pattern p = Pattern.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
if (m.find())
{
String var1=m.group(1);
System.out.print("("+var1.toString()+")"+"\n");
}
}
}
你可以使用txt2re.com来满足你所有的正则表达式需求(:值得检查。没必要提及,但是你当然可以简化你得到的源代码
您可以使用txt2re.com满足您的所有正则表达式需求(:值得检查。没必要提及,但您当然可以简化您获得的源代码。要找到您可以使用的id:
String url = "http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
Matcher matcher = Pattern.compile(".*/(.*?)=.*").matcher(url);
if (matcher.matches()) {
System.out.println(matcher.group(1));
}
要查找您可以使用的id,请执行以下操作:
String url = "http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
Matcher matcher = Pattern.compile(".*/(.*?)=.*").matcher(url);
if (matcher.matches()) {
System.out.println(matcher.group(1));
}
尝试:
尝试:
String链接=”http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
Pattern rex=Pattern.compile((?String-link=)http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
Pattern rex=Pattern.compile(“(?查看此解决方案:查看此解决方案:
String link = "http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6";
Pattern rex = Pattern.compile("(?<=watch\\?v=|/videos/)[^&#]*");
Matcher m = rex.matcher(link);
String YouTubeVideoID = m.group();