@Exci84

Как разбить многостроковый текст на массив с помощью регулярного выражения?

Есть многострочная строка из текстового файла.
const str = `#EXTINF:0 tvg-rec="7",Первый канал HD
#EXTGRP:Общие
http://site.com/index.m3u8
#EXTINF:0 tvg-rec="0",Россия 1 HD
#EXTGRP:Общие
http://site.com/index.m3u8
#EXTINF:0 tvg-rec="7",ТВ3 HD
#EXTGRP:Общие
http://site.com/index.m3u8`;

С помощью регулярного выражения хочу разбить текст на массив такого вида
const arr = [
  '#EXTINF:0 tvg-rec="7",Первый канал HD\n#EXTGRP:Общие\nhttp://site.com/index.m3u8',
  '#EXTINF:0 tvg-rec="0",Россия 1 HD\n#EXTGRP:Общие\nhttp://site.com/index.m3u8',
  '#EXTINF:0 tvg-rec="7",ТВ3 HD\n#EXTGRP:Общие\nhttp://site.com/index.m3u8',
];

Но я не очень умею в регулярные и у меня не получается побороть многострочность, флаг m не помогает
Выходит получить только первую одну из нужных строк, но в отдельные элемены
/^#EXTINF.*/gim;

[
  '#EXTINF:0 tvg-rec="7",Первый канал HD',
  '#EXTINF:0 tvg-rec="0",Россия 1 HD',
  '#EXTINF:0 tvg-rec="7",ТВ3 HD'
]

Либо весь текст в одну строку
/^#Extinf[\S\s]*.*m3u8$/gim

[
  '#EXTINF:0 tvg-rec="7",Первый канал HD\n' +
    '#EXTGRP:Общие\n' +
    'http://site.com/index.m3u8\n' +
    '#EXTINF:0 tvg-rec="0",Россия 1 HD\n' +
    '#EXTGRP:Общие\n' +
    'http://site.com/index.m3u8\n' +
    '#EXTINF:0 tvg-rec="7",ТВ3 HD\n' +
    '#EXTGRP:Общие\n' +
    'http://site.com/index.m3u8'
]

Помогите решить мою задачу. Понимаю что можно сделать проще с помощью split, но хочу научиться именно с помощью регулярного выражения
  • Вопрос задан
  • 120 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
/(#EXTINF.*?m3u8)/gmis
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Понимаю что можно сделать проще с помощью split, но хочу научиться именно с помощью регулярного выражения

Одно другому не мешает:

str.split(/\n(?=#EXTINF)/)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы