Java 从url提取路径值的正则表达式问题

Java 从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 如何单

我正在尝试从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

如何单独提取
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();