Как извлечь текст из большой строки и изменить его - PullRequest
0 голосов
/ 15 января 2019

У меня много файлов уценки, в которых есть некоторые данные. Это содержимое одного такого файла (макет, заголовок и т. Д. Не всегда в одном и том же порядке):

---
layout: post
title: An awesome title
date: 2019-01-11 00:00:00
description: My description goes here.
---

A lot of paraghaps bellow...

Мне нужно изменить формат и оставить только заголовок. Мне нужно это:

# An awesome title

A lot of paraghaps bellow...

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

Ответы [ 2 ]

0 голосов
/ 15 января 2019
---[\s\S]*?title:([^\r\n]*)[\s\S]*?---

https://regex101.com/r/SS3Orn/4

  1. 1-я группа захвата ([^\r\n]*): все символы до новой строки после "title:"
  2. [\ s \ S] * все символы, включая символы новой строки, до "---"

  3. Даже работает с несколькими примерами ввода на одной странице.

0 голосов
/ 15 января 2019

Вы можете попробовать это:

---(?:[\n\r]|.)*?(?<=title: )([^\n\r]+)(?:[\n\r]|.)*?---

Как показано здесь: https://regex101.com/r/9O99Fz/1/

Объяснение -

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


Кроме того, в части замещения \1 заменяется заголовком в группе захвата 1 , поэтому код должен выполняться правильно:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...