Javascript:将文本文件读入数组,按正则表达式

时间:2015-08-31 09:58:56

标签: javascript regex

我需要解析一个看起来像日志的纯文本文件:

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的消息)。

解析每个新条目的正确方法是什么?某种正则表达日期/时间匹配?或者一些正则表达式如上所述解析日期?

感谢你的帮助。

2 个答案:

答案 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)

我认为你可以使用这样的正则表达式:

/^[\d\/ :]+:[^:]+:(.*)|(.*)$/gm

然后您可以使用其替换:$1$2

[Regex Demo]