Regex для парсинга строки, зная первое слово и последнее

Я столкнулся с проблемой того, что мне необходимо парсить строку, которая выглядит как-то так:

Overview:
текст

другой абзац текста

Thread Updated: 0000-00-00

И сущность проблемы в том, что мне необходимо парсить все, что находится в этом блоке, но на каждой странице количество абзацев может отличаться, но Overview и Thread Updated всегда на своих местах. Поэтому я хотел подобрать такой Regex, чтобы оно удовлетворяло моим условия.

Я пытался использовать что-то подобное: "Overview:\n(.*?)(?=Thread Updated), но он проходит по всем символам только первого абзаца.

Поэтому мне бы хотелось узнать:

  1. Какой Regex тут подойдет
  2. И можно ли как-то ускорить процесс парсинга (потому что с данным Regex строка проходится за 500-1000 шагов из-за посимвольного прохода)

Ответы (1 шт):

Автор решения: ksa

мне необходимо парсить все, что находится в этом блоке, но на каждой странице количество абзацев может отличаться, но 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))

→ Ссылка