現在、会話ファイルをJavascriptで解析しようとしています。このような会話の例を次に示します。この正規表現で改行を無視する
(\d{2}\/\d{2}\/\d{4}),\s(\d(?:\d)?:\d{2})\s-\s([^:]*):\s(.*?)(?=\s*\d{2}\/|$)/gm
私のアプローチは、ほとんどがあり、予想通り、私に4グループを与えるよう
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
私の現在の正規表現は見え
{
"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]を使用しても問題は解決しません。パターンは単に停止し、次のオカレンスに移動します。
3回目の会話では、メッセージはキャリッジリターンで切断されます。
任意の助けいただければ幸いです!
あなたはCR以外の文字と一致する方法が必要なのですか? '[^ \ r]'を使用してください。またはLF以外の文字ですか?そして '[^ \ n]'を使います。 –
@WiktorStribiżewパターンがCRに達するとパターンが終了しないようにしたい –
"0x0D"やCRのようにCRを "ここで終わる"としますか? – Aaron