JavaScript Split sans perte de caractère

Je souhaite diviser certains textes en utilisant JavaScript. Le texte ressemble à:

9:30 pm The user did action A. 10:30 pm Welcome, user John Doe. 11:30 am Messaged user John Doe 

Maintenant, je veux diviser la chaîne en événements. c'est à dire:

 9:30 pm The user did action A. 

Serait un événement. J'utilise RegEx pour ceci:

 var split = journals.split(/\d*\d:/); 

La chose est, les deux premiers caractères se perdent. La division apparaît comme ceci:

 30 pm The user did action A. 

Comment puis-je me séparer de sorte que la division maintienne les deux premiers caractères (c.-à-d. 9: ou 10 :), etc.?

Merci!

Utilisez un lookahead:

 var split = journals.split(/(?=\b\d+:)/); 

Ne serait-il pas plus facile de diviser sur la nouvelle ligne?

 var split = journals.split(/\n\n/); 

MODIFIER

Essayez de normaliser la chaîne dans un format que vous pouvez utiliser:

 /* Non-normalized string */ var str = "9:30 pm\nThe user did action A.10:30 pm\nWelcome, user John Doe.\n\n\n11:30 am\nMessaged user John Doe\n12:30 pm\nThe user did something else."; /* Normalizing into a specific format. TIMESTAMP\nDESCRIPTION\n\n. Then removing extraneous leading \n\n */ str = str.replace(/\n*([0-9]{1,2}:[0-9]{2} (a|p)m)\n*/g, "\n\n$1\n").replace(/^\n+/, ""); var events = str.split(/\n\n/); /* The following should display an array of strings of the form: TIMESTAMP\nDESCRIPTION */ console.log(events); /* Loop through events and split on single newline to get timestamp and description */ for(var i = 0; i < events.length; i++) { var event = events[i]; var eventData = event.split(/\n/); var time = eventData[0]; var description = eventData[1]; console.log(time, description); }