所以我有以下格式的抽搐跟随者数据:
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,075
和summit1g
,分别为捕获1-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;
答案 1 :(得分:1)
以下正则表达式将捕获您想要的内容:(.+)\n([\d,]+).+on (\w+)
答案 2 :(得分:-1)