Regex для парсинга строки, зная первое слово и последнее
Я столкнулся с проблемой того, что мне необходимо парсить строку, которая выглядит как-то так:
Overview:
текст
другой абзац текста
Thread Updated: 0000-00-00
И сущность проблемы в том, что мне необходимо парсить все, что находится в этом блоке, но на каждой странице количество абзацев может отличаться, но Overview и Thread Updated всегда на своих местах. Поэтому я хотел подобрать такой Regex, чтобы оно удовлетворяло моим условия.
Я пытался использовать что-то подобное: "Overview:\n(.*?)(?=Thread Updated)
, но он проходит по всем символам только первого абзаца.
Поэтому мне бы хотелось узнать:
- Какой Regex тут подойдет
- И можно ли как-то ускорить процесс парсинга (потому что с данным Regex строка проходится за 500-1000 шагов из-за посимвольного прохода)
Ответы (1 шт):
мне необходимо парсить все, что находится в этом блоке, но на каждой странице количество абзацев может отличаться, но Overview и Thread Updated всегда на своих местах
Предложу такой вариант...
const s = `Overview:
текст1
другой абзац текста1
Thread Updated: 0000-00-00
Overview:
текст2
другой абзац текста2
Thread Updated: 0000-00-00`
const r = /(?<=Overview:\n)(?:.|\n)*?(?=\nThread Updated)/g
console.log(s.match(r))