Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 搜索YouTube描述中的时间和主题_Javascript_Regex_String - Fatal编程技术网

Javascript 搜索YouTube描述中的时间和主题

Javascript 搜索YouTube描述中的时间和主题,javascript,regex,string,Javascript,Regex,String,大约几周前,我开始学习正则表达式。为了练习,我想提取youtube视频中描述部分中出现的不同主题(以及它们各自的时间)(youtube使用它来分割进度条,每个片段代表不同的主题)。 例如,描述如下所示 00:00:00 - Introduction 00:00:15 - Machine Learning 00:01:15 - Supervised Learning . . 00:59:42 - scikit-learn 01:09:57 - Reinforcement Learning By c

大约几周前,我开始学习正则表达式。为了练习,我想提取youtube视频中描述部分中出现的不同主题(以及它们各自的时间)(youtube使用它来分割进度条,每个片段代表不同的主题)。 例如,描述如下所示

00:00:00 - Introduction
00:00:15 - Machine Learning
00:01:15 - Supervised Learning
.
.
00:59:42 - scikit-learn
01:09:57 - Reinforcement Learning
By course's end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own.

https://www.youtube.com/playlist?list...

***

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming.

所以,首先我想找一个正则表达式来直接实现这一点,但很快我就意识到,要找到一个单一的正则表达式来实现这一点是非常困难的,因为这些正则表达式并没有必须遵循的严格模式

以下是我发现的一些其他格式:

0:00 Caden’s Hills - ‘Livin’ it Up’  <-------------
https://spoti.fi/3itjBFj
https://www.instagram.com/cadens_hill...
Download: https://apple.co/3adwC2U
2:39 ROMES - ‘Lose My Cool’          <-------------
https://spoti.fi/2XJY2Zp
https://www.instagram.com/romes/?hl=en
Download: https://apple.co/3affRV3



所以,正如你所看到的,要想准确地做到这一点,用一个正则表达式是很困难的。所以我做了更多的思考和阅读。我提出了以下解决方案:

让输入=`
一些我不在乎的文字
...
拉拉拉
怀特先生。。。。
根据foooking peaky blinders的命令
命运就是一切。。
她一脸茫然
她失去了灵魂和希望
她不再感到疼痛
她和毒品有暧昧关系
再也没有波西了,那是一个围绕玫瑰的戒指
没有更多的午夜飞行
她的新欢是一个嫉妒的粘人
我会毫不犹豫地让她死
在他们的每一个亲密时刻
一起分享所有的时间
把她逝去的青春追逐到地狱
毒品让死亡最终抓住了她
----------------------------
//这就是我所关心的
讲座0:00
[第一件]
消元枢轴及其实例
3:09
-排除法失败10:34
14:50
[第二篇]
矩阵消去运算19:24
矩阵乘法的行运算20:22
矩阵乘法的列运算21:43
[第三件]
初等矩阵24:33
- 
-第二步:29:28
-超过32分10秒
矩阵33:29中的结合律
置换矩阵36:56
-行示例:37:36
交换律:矩阵阶41:17
逆矩阵:43:00
LALFDKLFNDKLSFDS
平克曼:我喜欢科学海滩。。。
dfdskfndksfd
世界末日
`
设正则表达式=/((?:\d{1,2})?(?::\d{1,2})?:\d{1,2})/;
设arr=input.split(/[\r\n]+/);//分裂
让时间=[];
让标签=[];
arr.forEach(e=>{
让我们比赛;
if(match=regex.exec(e)){//用于与此匹配的数组的所有元素
//获取在字符串中找到匹配项之前的字符数
beforeLength=match.index
//获取匹配后的字符数
AfterLength=e.length-(match.index+match[1].长度)
//我已经有了匹配(时间),所以将其放入时间数组中
推(匹配[1]);
//在这里,我做了这样的假设:标签出现在字符数较多的一侧的可能性更大
//(我还想过从数组中随机选择3个元素,然后在此循环之前根据三选一的结果选择一个边,并将该边用作每个元素的标签),这与我现在所做的不同。
如果(后长>前长){
labels.push(e.substring(match.index+match[1].length.trim())
}否则{
labels.push(e.substring(0,match.index).trim());
}
}
});
让结果=标签
//只是清理一下
if(labels.every(s=>s[0]==labels[0][0])){
结果=labels.map(s=>s.substring(1.trim());
}
console.log(时间)
console.log(result)
const re=String.raw`([-a-z:]*)([:\d]+)$`;
常量匹配=输入
.match(新的RegExp(re,'gmi'))//我们只需要带时间戳的行
.map(match=>match.match(新的RegExp(re,'i'))//分为时间戳和字符串
.map(([,str,time])=>([time,str.trim()]);//只保留时间戳和字符串
实时示例(但在浏览器的真实控制台中查看更漂亮的输出):

“严格使用”;
const input=`一些我不关心的文本
...
拉拉拉
怀特先生。。。。
根据foooking peaky blinders的命令
命运就是一切。。
她一脸茫然
她失去了灵魂和希望
她不再感到疼痛
她和毒品有暧昧关系
再也没有波西了,那是一个围绕玫瑰的戒指
没有更多的午夜飞行
她的新欢是一个嫉妒的粘人
我会毫不犹豫地让她死
在他们的每一个亲密时刻
一起分享所有的时间
把她逝去的青春追逐到地狱
毒品让死亡最终抓住了她
----------------------------
//这就是我所关心的
讲座0:00
[第一件]
消元枢轴及其实例
3:09
-排除法失败10:34
14:50
[第二篇]
矩阵消去运算19:24
矩阵乘法的行运算20:22
矩阵乘法的列运算21:43
[第三件]
初等矩阵24:33
- 
-第二步:29:28
-超过32分10秒
矩阵33:29中的结合律
置换矩阵36:56
-行示例:37:36
交换律:矩阵阶41:17
逆矩阵:43:00
LALFDKLFNDKLSFDS
平克曼:我喜欢科学海滩。。。
dfdskfndksfd
世界末日
`;
const re=String.raw`([-a-z:]*)([:\d]+)$`;
常量匹配=输入
.match(新的RegExp(re'gmi'))
.map(match=>match.match(新的RegExp(re'i'))
.map(([,str,time])=>([time,str.trim()]);
console.log(匹配项)
const re=String.raw`([-a-z:]*)([:\d]+)$`;
常量匹配=输入
.match(新的RegExp(re,'gmi'))//我们只需要带时间戳的行
.map(match=>match.match(新的RegExp(re,'i'))//分为时间戳和字符串
.map(([,str,time])=>([time,str.trim()]);//只保留时间戳和字符串
实时示例(但在浏览器的真实控制台中查看更漂亮的输出):

“严格使用”;
const input=`一些我不关心的文本
...
拉拉拉
怀特先生。。。。
根据foooking peaky blinders的命令
命运就是一切。。
她一脸茫然
她失去了灵魂和希望
她不再感到疼痛
她和毒品有暧昧关系
再也没有波西了,那是一个围绕玫瑰的戒指
没有更多的午夜飞行
她的新欢是一个嫉妒的粘人
我会毫不犹豫地让她离开
⌨️ (1:40:38) Sine and Cosine of Special Angles
⌨️ (1:48:41) Unit Circle Definition of Sine and Cosine
⌨️ (1:54:11) Properties of Trig Functions
⌨️ (1:04:50) Graphs of Sine and Cosine
incermenting numbers 15:30
decrementing numbers15:59 // this is not a mistake.. there is no space.
decimal numbers 16:23
01 - 00:00 - Into the sun (Sons Of The East)
02 - 03:48 - Looking too Closely (Fink)
03 - 07:20 - Numb/Encore (Linkin Park & Jay Z)