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

Ссылка скопирована
1 ответ

Есть многострочная строка из текстового файла.

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 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",Первый канал HDn#EXTGRP:Общиеnhttp://site.com/index.m3u8',   '#EXTINF:0 tvg-rec="0",Россия 1 HDn#EXTGRP:Общиеnhttp://site.com/index.m3u8',   '#EXTINF:0 tvg-rec="7",ТВ3 HDn#EXTGRP:Общиеnhttp://site.com/index.m3u8', ];

const arr = [ '#EXTINF:0 tvg-rec="7",Первый канал HDn#EXTGRP:Общиеnhttp://site.com/index.m3u8', '#EXTINF:0 tvg-rec="0",Россия 1 HDn#EXTGRP:Общиеnhttp://site.com/index.m3u8', '#EXTINF:0 tvg-rec="7",ТВ3 HDn#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:0 tvg-rec="7",Первый канал HD', '#EXTINF:0 tvg-rec="0",Россия 1 HD', '#EXTINF:0 tvg-rec="7",ТВ3 HD' ]

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

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

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

Помогите решить мою задачу. Понимаю что можно сделать проще с помощью split, но хочу научиться именно с помощью регулярного выражения

Дополнительно:

/(#EXTINF.*?m3u8)/gmis

  • Спасибо!

Понимаю что можно сделать проще с помощью split, но хочу научиться именно с помощью регулярного выражения

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

str.split(/n(?=#EXTINF)/)

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для разбиения многострочного текста на массив с помощью регулярного выражения в языке программирования PHP можно воспользоваться функцией preg_split(). Эта функция разбивает строку с помощью регулярного выражения и возвращает массив подстрок.

Пример использования preg_split() для разделения текста по символу новой строки:

$text = "Разбить
многостроковый
текст
на массив";

$lines = preg_split('/\r

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно