Регулярное выражение, поиск значения в блоке
Есть текстовый файл, следующего содержания:
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
НАЧАЛО БЛОКА <ТЕЛО БЛОКА> ОКОНЧАНИЕ БЛОКА
В теле блока содержится текст любого значения в том числе переносы строк, символы, буквы цифры. Как получить тело блока (с учетом возможности того, что в нем может находится любое значение), заключенное между <НАЧАЛО БЛОКА>, <ОКОНЧАНИЕ БЛОКА>
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Как получить тело блока (с учетом возможности того, что в нем может находится любое значение), заключенное между <НАЧАЛО БЛОКА>, <ОКОНЧАНИЕ БЛОКА>
Предложу такой вариант...
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))