Регулярное выражение, поиск значения в блоке

Рейтинг: -2Ответов: 1Опубликовано: 12.02.2025

Есть текстовый файл, следующего содержания:

НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА

В теле блока содержится текст любого значения в том числе переносы строк, символы, буквы цифры. Как получить тело блока (с учетом возможности того, что в нем может находится любое значение), заключенное между <НАЧАЛО БЛОКА>, <ОКОНЧАНИЕ БЛОКА>

Ответы

▲ 1Принят

Как получить тело блока (с учетом возможности того, что в нем может находится любое значение), заключенное между <НАЧАЛО БЛОКА>, <ОКОНЧАНИЕ БЛОКА>

Предложу такой вариант...

const s = `НАЧАЛО БЛОКА <ТЕЛО БЛОКА1> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО 
БЛОКА2> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА3> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО 


БЛОКА4> ОКОНЧАНИЕ БЛОКА`
const r1 = /НАЧАЛО\sБЛОКА\s|\sОКОНЧАНИЕ\sБЛОКА/g
console.log('Вариант 1', s.replace(r1, ''))

const r2 = /(?<=НАЧАЛО\sБЛОКА\s)[\s\S]*?(?=\sОКОНЧАНИЕ\sБЛОКА)/g
console.log('Вариант 2', s.match(r2))