Прошу помощи с регуляркой
Имеется текст вида:
Общие характеристики---Операционная система--iOS 12|<br>
;Материал корпуса--Алюминий|<br>
;Вес--631 гр|<br>
;Размеры--280,6x 214,9x 5,9 мм|<br>
Экран---Тип экрана--Liquid Retina|<br>
;Экран--12,9"|<br>
;Разрешение экрана--2732×2048|<br>
;Автоматический поворот экрана--есть|<br>
;Число пикселей на дюйм (PPI)--264|<br>
Мультимедийные возможности---Запись видеороликов--есть|<br>
;Макс. разрешение видео--4К|<br>
;Макс. частота кадров видео--60 кадров/с|<br>
;Фронтальная камера--7 Мп|<br>
;Фотокамера--12 Мп|
Пытаюсь получить следующий результат:
Общие характеристики---Операционная система--iOS 12|<br>
Общие характеристики---Материал корпуса--Алюминий|<br>
Общие характеристики---Вес--631 гр|<br>
Общие характеристики---Размеры--280,6x 214,9x 5,9 мм|<br>
Экран---Тип экрана--Liquid Retina|<br>
Экран---Экран--12,9"|<br>
Экран---Разрешение экрана--2732×2048|<br>
Экран---Автоматический поворот экрана--есть|<br>
Экран---Число пикселей на дюйм (PPI)--264|<br>
Мультимедийные возможности---Запись видеороликов--есть|<br>
Мультимедийные возможности---Макс. разрешение видео--4К|<br>
Мультимедийные возможности---Макс. частота кадров видео--60 кадров/с|<br>
Мультимедийные возможности---Фронтальная камера--7 Мп|<br>
Мультимедийные возможности---Фотокамера--12 Мп|
Нужно именно регулярное выражение.
Ответы (1 шт):
Автор решения: vsemozhetbyt
→ Ссылка
Поскольку автор плагина даёт ссылку на PCRE, трудно судить, какой язык и движок будет использоваться и какой версии.
Например, последние версии движков JavaScript поддерживают lookbehind assertions с квантификаторами неопределённой длины. Если такая поддержка есть, можно попробовать такое решение:
const str = `
Общие характеристики---Операционная система--iOS 12|<br>
;Материал корпуса--Алюминий|<br>
;Вес--631 гр|<br>
;Размеры--280,6x 214,9x 5,9 мм|<br>
Экран---Тип экрана--Liquid Retina|<br>
;Экран--12,9"|<br>
;Разрешение экрана--2732×2048|<br>
;Автоматический поворот экрана--есть|<br>
;Число пикселей на дюйм (PPI)--264|<br>
Мультимедийные возможности---Запись видеороликов--есть|<br>
;Макс. разрешение видео--4К|<br>
;Макс. частота кадров видео--60 кадров/с|<br>
;Фронтальная камера--7 Мп|<br>
;Фотокамера--12 Мп|
`;
const regexp = /(?<=(^[^;\n].+?---)(?:.+?\n));/gms;
const replacement = '$1';
console.log(str.replace(regexp, replacement));