gpt4 book ai didi

java - 更改 JS 正则表达式以在 Java 中工作

转载 作者:行者123 更新时间:2023-12-03 11:35:18 26 4
gpt4 key购买 nike

我遇到了这个 JS 正则表达式,它从下面列出的 Youtube URL 检索 ID。

/(youtu(?:\.be|be\.com)\/(?:.*v(?:\/|=)|(?:.*\/)?)([\w'-]+))/i

Youtube URL 测试于:

http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo

http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel

http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub

http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I

http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY

http://youtu.be/6dwqZw0j_jY

http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be

http://youtu.be/afa-5HQHiAs

http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0

http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel

http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub

http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I

http://www.youtube.com/embed/nas1rJpm7wY?rel=0

http://www.youtube.com/watch?v=peFZbP64dsU

如何修改正则表达式以在 Java 中工作?另外,是否也可以更改为从 gdata URL 中选择 ID?例如 https://gdata.youtube.com/feeds/api/users/Test/?alt=json&v=2

更新:这是我打算使用正则表达式的函数。

public static String getIDFromYoutubeURL(String ytURL ) {
if(ytURL.startsWith("https://gdata")) { // This is my obviously silly hack,
ytURL = ytURL.replace("v=\\d", ""); // I belive Regext should handle this.
}
String pattern = "(?i)(https://gdata\\.)?(youtu(?:\\.be|be\\.com)/(?:.*v(?:/|=)|(?:.*/)?)([\\w'-]+))";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(ytURL);

if(matcher.find()){
return matcher.group(3);
}
return null;
}

目前,它适用于上面列出的网址和 https://gdata.youtube.com/feeds/api/users/Test/?id=c。但是,如果 Gdata URL 带有版本参数,则效果不佳。例如 v=2,(https://gdata.youtube.com/feeds/api/users/Test/?id=c&v=2)。在本例中,它返回 2 作为 ID。如何改进以返回 Test 而不是 2 作为 Gdata URL 中的 ID?谢谢。

最佳答案

我修好了!
使用replaceAll代替:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test2 {
public Test2() {
// TODO Auto-generated constructor stub
}

public static void main(String[] args) {
String toTest = getIDFromYoutubeURL(
"https://gdata.youtube.com/feeds/api/users/Test/?id=c&v=2");
System.out.println(toTest);
}

public static String getIDFromYoutubeURL(String ytURL ) {
if(ytURL.startsWith("https://gdata")) { // This is my obviously silly hack,
ytURL = ytURL.replaceAll("v=\\d", ""); // I belive Regext should handle this.
}
String pattern = "(?i)(https://gdata\\.)?(youtu(?:\\.be|be\\.com)/(?:.*v(?:/|=)|(?:.*/)?)([\\w'-]+))";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(ytURL);

if(matcher.find()){
return matcher.group(3);
}
return null;
}
}

关于java - 更改 JS 正则表达式以在 Java 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com