В настоящее время я пытаюсь проанализировать файл разговора в Javascript. Вот пример такого разговора.Игнорирование возвратов каретки в регулярных выражениях
09/05/2016, 13:11 - Joe Bloggs: 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! 09/05/2016, 13:47 - Jane Doe: Hey! I'm in london from the 12th-16th of june! Hope you can make it down :) sorry it's a bit annoying i couldn't make it there til a sunday! 09/05/2016, 14:03 - Joe Bloggs: Right I'll speak to my boss! I've just requested 5 weeks off in November/December to visit Aus so I'll see if I can negotiate some other days! When does your uni term end in November? I'm thinking of visiting perth first then going to the east coast! 09/05/2016, 22:32 - Jane Doe: Oh that'll be awesome if you come to aus! Totally understand if it's too hard for you to request more days off in june. I finish uni early November! So should definitely be done by then if you came here 09/05/2016, 23:20 - Joe Bloggs: I could maybe get a couple of days when do you fly into London on the Sunday? Perfect! I need to speak to everyone else to make sure they're about. I can't wait to visit but it's so far away! 09/05/2016, 23:30 - Jane Doe: I fly in at like 7.30am so I'll have that whole day! I'm sure the year will fly since it's may already haha 09/05/2016, 23:34 - Joe Bloggs: Aw nice one! Even if I can get just Monday off I can get an early train on Sunday
Мой текущий регулярное выражение выглядит следующим образом
(\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]не решает проблему. Шаблон просто останавливается и переходит на следующее вхождение.
Для третьего разговора сообщение обрезается при возврате каретки.
Любая помощь будет оценен по достоинству!
Вы имеете в виду, что вам нужен способ соответствия любому символу, но CR? Используйте '[^ \ r]'. Или любой символ, но LF? Затем используйте '[^ \ n]'. –
@ WiktorStribiżew Я бы хотел, чтобы шаблон не заканчивался, когда он достигает CR –
Вы имеете в виду CR, как в '0x0D' или CR, как в« концах здесь »? – Aaron