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

时间:2015-08-11 07:13:05

标签: javascript regex

所以我有以下格式的抽搐跟随者数据:

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}只捕获标题和以下所有信息,但我想要的是具体的查看器数量和通道名称。理想的捕获输出分别为20Hour Stream w/ @summit1g.19,075summit1g,分别为捕获1-3。

有没有办法用正则表达式做到这一点?谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

/(.+)\n(\d+(?:,\d{3})*)\s+viewers on\s+(\w+)/

请参阅demo

请注意,.实际上等于JavaScript中的[^\n](因为没有单行修饰符)。

(.+)捕获第一行,然后\n继续到下一行,(\d+(?:,\d{3})*)使用可选的数千,数百万等来捕获数字),\s+匹配1个或多个空白字符,(\w+)捕获Twitch ID。



var re = /(.+)\n(\d+(?:,\d{3})*)\s+viewers on\s+(\w+)/g; 
var str = '20Hour Stream w/ @summit1g.\n19,075 viewers on summit1g\n\n\nUntitled Broadcast\n6,392 viewers on Trick2g\n\n\nVinny || Metal Gear Solid 3: Snake Meeter + More\n2,948 viewers on Vinesauce\n\n\nIsaac Mastery - http://bit.ly/1JwGmnn - #1147\n2,862 viewers on Lethalfrag\n\n\nVIDYA GAEMZ STREAM???\n1,554 viewers on Boogie2988';
var m;
 
while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    document.write("channel name: " + m[1] + "<br/>");
  document.write("count: " + m[2] + "<br/>");
  document.write("title: " + m[3] + "<br/><br/>");
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

以下正则表达式将捕获您想要的内容:(.+)\n([\d,]+).+on (\w+)

答案 2 :(得分:-1)

如何获得这个过程:

  • 捕获第一行 - 后跟\ n
  • 任意数量的字符
  • 后跟任意数量的空格
  • 关注句子&#39;观众&#39;
  • 捕捉流光的名称

Demo here