提问人:Elad Benda 提问时间:2/7/2022 更新时间:2/8/2022 访问量:35
获取 YT 视频、频道或无
Fetching YT video, channel or none
问:
给定一个 url 列表,如何将其划分为 3 个总和列表?
一个用于 YT 视频,第二个用于 YT 频道,第三个用于所有其他视频?
const paragraph1 = 'www.youtube.com/watch?v=NsjeEt1ZpqQ';
const regex1 = /www.youtube.com/(\c*)(watch?v=)?<videoId>[A-Z,0-9])/gi;
const paragraph2 = 'https://www.youtube.com/channel/UCKqFqiCe1dCUxRe0_YNZ6gg';
const regex2 = /www.youtube.com/channel/?<channelId>[A-Z,_,0-9])/gi;
const found = paragraph1.match(regex1);
console.log(found);
// expected output: Array ["T", "I"]
const found = paragraph2.match(regex2);
console.log(found);
试图在这个网站上进行沙盒。
答:
0赞
Wiktor Stribiżew
2/8/2022
#1
由于您计划将某个 URL 字符串列表拆分为三个不同的部分,因此可以使用三种不同的模式:
www\.youtube\.com\/watch\?v=(?<videoId>\S+)
www\.youtube\.com\/channel\/(?<videoId>\S+)
www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
请参阅正则表达式 #1、正则表达式 #2 和正则表达式 #3 演示。请注意,您需要一个符合 ECMAScript 2018+ 的 JavaScript 环境才能使指定的捕获组正常工作。另外,看到点在它们表示文字点的地方被转义。
这些模式意味着
www\.youtube\.com\/watch\?v=
- 文字字符串www.youtube.com/watch?v=
(?<videoId>\S+)
- 组 “videoId”:一个或多个非空格字符www\.youtube\.com\/channel\/(?<videoId>\S+)
- 一个文本字符串,然后对“videoId”进行组,捕获一个或多个非空格字符www.youtube.com/channel/
www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
-www.youtube.com
字符串,然后是一个负 lookahead,如果紧挨着右边有一个字符,则 then 或 ,然后消耗零个或多个非空格字符,则匹配失败。/
channel/
watch?v=
如果您打算再次使用这些模式来标记一些标记文本,请确保从模式中减去标记字符,也就是说,将其更改为带有反向速记的否定字符类,并在 之后添加字符。比如说,如果链接在双引号内,请放在那里。\S
[^\s]
\s
"
[^\s"]
上一个:如何在Excel中选择匹配的模板
评论