Вы можете попробовать это:
---(?:[\n\r]|.)*?(?<=title: )([^\n\r]+)(?:[\n\r]|.)*?---
Как показано здесь: https://regex101.com/r/9O99Fz/1/
Объяснение -
(?:[\n\r]|.)*?
- после сопоставления '---' регулярное выражение сопоставляет все символы до следующего условия в регулярном выражении:
(?<=title: )
- это положительный взгляд, который указывает регулярному выражению совпадать с текстом, которому предшествует title:
([^\n\r]+)
- поскольку заголовок будет одним предложением, эта группа соответствует действительному заголовку, который вы хотите, говоря, что у нее не должно быть перевода строки или возврата каретки (это группа захвата 1 )
(?:[\n\r]|.)*?---
соответствует последней части раздела «детали»
Кроме того, в части замещения
\1
заменяется заголовком в
группе захвата 1 , поэтому код должен выполняться правильно:)