Как разбить многостроковый текст на массив с помощью регулярного выражения?
Есть многострочная строка из текстового файла.
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)/)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для разбиения многострочного текста на массив с помощью регулярного выражения в языке программирования PHP можно воспользоваться функцией preg_split(). Эта функция разбивает строку с помощью регулярного выражения и возвращает массив подстрок.
Пример использования preg_split() для разделения текста по символу новой строки: