分析反击日志
Parse counter strike logs
我正在通过nodejs实时分析反击服务器日志。脚本的目标是接收日志,解析日志,并根据日志中包含的内容在服务器上执行操作。
这运行得很好,但现在,脚本正在拆分每个日志行,以查找所需的信息(用户、操作)。我希望脚本使用regex解析日志,而regex和我不是朋友。。。
我举了一个fiddlej的例子:https://jsfiddle.net/jeremyb/ea63g8tz/1/
var logs = [
'13-12-2015<"U:1:2392398293"><T>say "go d2"',
'13-12-2015<"U:1:6565233215"><T>say "crap"',
'13-12-2015<"U:1:4548512145"><T>say "go inf"',
'13-12-2015<"U:1:6565233215"><T>say "stuff"',
'13-12-2015<"U:1:4548512145"><T>say "things"',
'13-12-2015<"U:1:2392398293"><T>say "war rr"',
'13-12-2015<"U:1:4548512145"><T>say "kick t"',
'13-12-2015<"U:1:6565233215"><T>say "kick ct"',
'13-12-2015<"U:1:6565233215"><T>say "kick all"'
];
for (var l = 0; l < logs.length; l++) {
var log = logs[l],
re = /<(.*)>/,
test = log.match(re);
for (var i = 0; i < test.length; i++) {
add_log(test[i]);
}
}
我不知道如何在一个var中输入用户(U:1:2392398293),并在另一个var(转到d2)中输入用户所说的内容。
jquery的使用仅限于fiddle,在nodejs脚本中不需要它。
感谢阅读!英语不是我的母语,对我宽容一点!
re = /<(.*?)>/
^^
使正则表达式成为非贪婪
一种简单的方法,只适用于您提到的两种情况。
for (var l = 0; l < logs.length; l++) {
var log = logs[l], re1 = /'<"(.*)"'>/, re2 = /say "(.*)"/ ;
test = log.match(re1);
console.log(test[1]);
test = log.match(re2);
console.log(test[1]);
}
或
for (var l = 0; l < logs.length; l++) {
var log = logs[l], re = /'<"(.*)"'>.*say "(.*)"/
test = log.match(re);
console.log(test[1] + ' , ' + test[2]);
}
我在浏览器控制台中替换了你的循环部分后对它进行了测试。
相关文章:
- /undefined在我的404错误日志中多次出现
- 如何使用Protractor从Chrome控制台获取所有日志
- 自定义运行时Can'在谷歌应用引擎中看不到我的自定义日志
- 日志Javascript&电子(原子外壳)
- 在log4javascript中添加自定义日志级别
- 按压“;输入“;将值打印到控制台日志
- 日志:未捕获的范围错误:超过了最大调用堆栈大小
- 我想在单击对象时打印日志
- 有可能得到一个大整数实例的自然日志吗
- 如何在服务器控制台上打印前端日志消息
- UI的日志记录框架
- HTML文件中的智能Javascript建议在Visual Studio代码更新后没有日志程序工作
- 如何angularjs将日志写入文件
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- jquery从url中获取参数也会在控制台日志中留下url
- 时间日志的javascript/jquery验证(5小时3米)
- Sails.js日志传输依赖于环境
- NodeJs:如何在EC2实例中查看PM2运行的NodeJS服务器的日志
- 分析反击日志