我需要解析一个看起来像日志的纯文本文件:
11/04/2015 11:45:01: James: Cheers guys, enjoy the weekend!
11/04/2015 12:08:55: Sarah: Sounds good James
11/04/2015 12:09:24: Sarah: What are the details of the trip?
11/04/2015 12:19:06: Leah: Driving up on Friday.
Saturday we'll hit the beach.
Sunday paaaaarty!
11/04/2015 12:29:54: James: Nice.
我目前正在通过换行解析:
var messages = data.split('\n');
但是这在消息包含换行符的情况下不起作用(参见上面的Leah的消息)。
解析每个新条目的正确方法是什么?某种正则表达日期/时间匹配?或者一些正则表达式如上所述解析日期?
感谢你的帮助。
答案 0 :(得分:2)
我认为你可以尝试的是 -
如果每个具有日期格式的行统计信息然后将其后续部分作为字符串,直到它以另一个日期格式结束。
不要拆分使用
\n
代替使用mm/dd/yyyy hh:mm:ss:
格式的日期。逻辑需要申请以下类型,因为您的文字是这种类型,如下所述 -
日期格式开始>> 内容 <<日期格式结束
使用本指南制作您自己的正则表达式。 http://www.w3schools.com/jsref/jsref_obj_regexp.asp
Try this Regular Expression to split /[0-9]+\/[0-9]+\/[0-9]* [0-9]*\:[0-9]*\:[0-9]*\:/g
var re = /[0-9]+\/[0-9]+\/[0-9]* [0-9]*\:[0-9]*\:[0-9]*\:/g;
var str = '11/04/2015 11:45:01: James: Cheers guys, enjoy the weekend!\n\n11/04/2015 12:08:55: Sarah: Sounds good James\n\n11/04/2015 12:09:24: Sarah: What are the details of the trip?\n\n11/04/2015 12:19:06: Leah: Driving up on Friday.\nSaturday we\'ll hit the beach.\nSunday paaaaarty!\n\n11/04/2015 12:29:54: James: Nice.';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
答案 1 :(得分:1)