Javascript 从Twitch信息中捕获特定数据?

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 -

因此,我有以下格式的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 - #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上的用户名不包含破折号。它适用于我测试过的每个场景。