2012-07-27 69 views
1

我试图从URL中提取视频ID值正则表达式的问题与提取的路径从URL

http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6 

我用什么Pattern.compile("/v/([^&]*)")我得到空, 如果我使用Pattern.compile("/v/([^/]*)")我得到下面的输出 Ig1WxMI9bxQ & HL = FR & FS = 1 & COLOR1 = 0x2b405b & COLOR2 = 0x6b8ab6

我怎样才能提取单独Ig1WxMI9bxQ

+0

看在这个解决方案:http://stackoverflow.com/questions/7894727/youtube-complete-java-regex – 2012-07-27 09:47:57

回答

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)); 
} 
0
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您所有的需求正则表达式(:它值得检查无用提,但ofcourse你可以简化你的源

0

尝试:

String url = http://www.youtube.com/v/Ig1WxMI9bxQ&hl=fr&fs=1&color1=0x2b405b&color2=0x6b8ab6 
String id = url.substring(url.indexOf("/v/") + 3, url.indexOf("&")); 
0
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();