Сообщение от SpaceAlarm
|
получил из текстового файла весь текст, потом через split разбил по \n
|
В итоге получили массив строк, я же предложил разбить весь текст сначала на массив отдельных сообщений (string[]), а потом уже эти сообщения разбирать, как вам захочется.
Upd. вы неправильно выбрали разделитель (separator), двойной вертикальный пробел - не лучшее решение, т.к. само сообщение может содержать несколько пустых строк. У вас каждое новое сообщение начинается со слов "От кого" либо "Кому", эти фразы и стоило использовать в кач-ве разделителя.
const text = `От кого:
Пользователь Маша Зайцева ([url]https://play.com/id1[/url])
01.01.2022 в 02:25:28
да
От кого:
Пользователь Карина Васильева ([url]https://play.com/id2[/url])
01.01.2022 в 03:25:22
все
От кого:
Пользователь Ларис Викторовна ([url]https://play.com/id23/url])
01.01.2022 в 03:28:22
Скинь сообщение
Кому:
Пользователь Ларис Викторовна (https://play.com/id3)
01.01.2022 в 04:25:11
вот держи
Прикреплено сообщение #1
От кого:
Пользователь Маша Зайцева (https://play.com/id4)
01.01.2022 в 02:25:28
да
От кого:
Пользователь Ларис Викторовна ([url]https://play.com/id2[/url])
01.01.2022 в 03:28:22
прикреплен файл #1 foto ([url]http://site.ru/a.png[/url])
`;
const segments = text.split(/(?<!прикреплено сообщение .+?\n)(от кого|кому)/iu).filter(Boolean);
const messages = segments.reverse().reduce((res, segment) => {
if (['от кого', 'кому'].includes(segment.toLowerCase())) {
res[res.length - 1] = segment + res[res.length - 1];
} else {
res.push(segment);
}
return res;
}, []).reverse();
console.log(messages)