我目前正在尝试使用Javascript解析对话文件。以下是这样一段对话的示例。
09/05/2016,13:11 - Joe Bloggs:嘿Jane,你好吗?你在伦敦的日期是什么?我意识到六月并不遥远,所以可能会提前订火车票! 09/05/2016,13:47 - Jane Doe:嘿!我在6月12日至16日在伦敦!希望你能来:)很抱歉我只能在周日之后才能到那里! 09/05/2016,14:03 - Joe Bloggs:好的,我会和我的老板说的!我刚刚请求了11月/ 12月的5个星期去澳大利亚旅行,所以我会看看是否可以谈判其他日期!你们学校11月份什么时候结束?我想先去珀斯再去东海岸! 09/05/2016,22:32 - Jane Doe:哦,如果你来澳大利亚就太棒了!如果你不能在六月请更多的假期,我完全理解。
我11月初就要放学了!所以如果你来这里应该已经结束了。 09/05/2016,23:20 - Joe Bloggs:我也许可以请几天假,你周日何时飞往伦敦?
太好了!我需要和其他人商量确保他们在。我迫不及待地想去,但是还有很长时间! 09/05/2016,23:30 - Jane Doe:我早上7点半左右飞到,所以整个白天都有时间!
我相信这一年会很快过去,因为现在已经是五月了哈哈
我的当前正则表达式看起来像这样
(\d{2}\/\d{2}\/\d{4}),\s(\d(?:\d)?:\d{2})\s-\s([^:]*):\s(.*?)(?=\s*\d{2}\/|$)/gm
我的方法已经接近完成,按预期给出了4个分组。
{
"group": 1,
"value": "09/05/2016"
},
{
"group": 2,
"value": "13:11"
},
{
"group": 3,
"value": "Joe Bloggs"
},
{
"group": 4,
"value": "Hey Jane how're you doing? what dates are you in London again? I realise that June isn't actually that far away so might book my trains down sooner than later!"
}
当一个消息(组4)包含回车符时,问题就出现了。 (请参见示例代码片段中第3行的消息)。
我进行了一些研究,并且使用
[\s\S]无法解决我的问题。该模式只是停止并转到下一个出现。
对于第三次对话,消息在回车符处被切断。
任何帮助将不胜感激!
[^\r]
。或者是除 LF 以外的任何字符?那么使用[^\n]
。 - Wiktor Stribiżew0x0D
这个字符的 CR,还是指“这一行到此结束”的 CR? - Aaron