Javascript 从Twitch信息中捕获特定数据?
因此,我有以下格式的twitch follower数据:Javascript 从Twitch信息中捕获特定数据?,javascript,regex,Javascript,Regex,因此,我有以下格式的twitch follower数据: 20Hour Stream w/ @summit1g. 19,075 viewers on summit1g Untitled Broadcast 6,392 viewers on Trick2g Vinny || Metal Gear Solid 3: Snake Meeter + More 2,948 viewers on Vinesauce Isaac Mastery - http://bit.ly/1JwGmnn -
20Hour Stream w/ @summit1g.
19,075 viewers on summit1g
Untitled Broadcast
6,392 viewers on Trick2g
Vinny || Metal Gear Solid 3: Snake Meeter + More
2,948 viewers on Vinesauce
Isaac Mastery - http://bit.ly/1JwGmnn - #1147
2,862 viewers on Lethalfrag
VIDYA GAEMZ STREAM???
1,554 viewers on Boogie2988
DREAM TEAM ~ 0/10 wins in a row! ~ 230 BR Wins ~ @sxyhxy ┌∩┐(ò_óˇ)
1,098 viewers on sxyhxy
我想知道是否可以使用Regexp在三个不同的组中捕获观众数量、观众的频道名称以及他们流的标题
我有下面的正则表达式:([^\n]+)\n([^\n]+)\n{2}
,它只捕获标题和下面的所有信息,但我想要的是观众数量和频道名称。理想的捕获输出将是20小时流w/@summit1g.
,19075
,以及summit1g
,分别作为捕获1-3
有没有办法只用正则表达式就可以做到这一点?谢谢 获取此过程如何:
- 捕获第一行-后跟\n
- 任意数量的字符
- 后跟任意数量的空格
- 接“观众”一句
- 捕获拖缆的名称
您可以使用以下正则表达式:
/(.+)\n(\d+(?:,\d{3})*)\s+viewers on\s+(\w+)/
看
请注意,
实际上等于JavaScript中的[^\n]
(因为没有单行修饰符)
(.+)
捕获第一行,然后\n
进入下一行,(\d+(?:,\d{3})*)
捕获带有可选千、百万等的数字,\s+
匹配一个或多个空白字符,(\w+)
捕获Twitch ID
var re=/(.+)\n(\d+(?:,\d{3})*)\s+查看器在\s+(\w+)/g上;
var str='20Hour Stream w/@summit1g.\n19075名观众观看summit1g\n\n无标题广播\n6392名观众观看Trick2g\n\n\nVinny | | | |金属齿轮固体3:Snake Meeter+更多\n2948名观众观看Vinesauce\n\n\n\nIsaac Mastery-http://bit.ly/1JwGmnn -#1147\n2862名Lethalfrag上的观众\n\n\nvidia GAEMZ STREAM???\n1554名Boogie2988'上的观众;
var-m;
while((m=re.exec(str))!==null){
如果(m.index==re.lastIndex){
re.lastIndex++;
}
文档。写入(“频道名称:+m[1]+”
);
文件。写入(“计数:+m[2]+”
);
文件。书写(“标题:+m[3]+”
);
}下面的正则表达式将捕获您想要的内容:(.+)\n([\d,]+).+on(\w+)
如果可能的话,我想在一个表达式中完成所有操作。。。有没有一种方法可以把它转换成我的原始表达式?为所有人编辑的。错误读取拖缆名称部分。无论如何,下面的正则表达式比我的更强大,我的意思是比我的更一般。这是一个很好的答案,在启用多行标志的情况下工作,但是@Dungeonfire已经发布了一个不需要它的答案,它更适合我的代码,对不起……但是你可以删除^
和/m
,我想,这其实并不重要。我更新了答案。最重要的部分是以正确的模式将捕获组放置在正确的位置。如果您的标题中有空格,则其他建议的正则表达式将失败。好的,我发现它们不能包含空格并符合\w+
regex。我更新了答案以提高精度。如果输入包含Boogie-2988上的VIDYA GAEMZ STREAM???[newline]1554个查看器,或Boogie-2988上的VIDYA GAEMZ STREAM???[newline]1554个查看器,则会失败。twitch上的用户名不包含破折号。它适用于我测试过的每个场景。