如何从大字符串中提取文本并进行更改

时间:2019-01-15 03:23:22

标签: ruby regex

我有很多降价文件,其中包含一些前沿问题数据。这是一个这样的文件的内容(布局,标题等并不总是相同的顺序):

---
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 :(得分:0)

您可以尝试一下:

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

如此处所示: https://regex101.com/r/9O99Fz/1/

说明-

(?:[\n\r]|.)*?-匹配'---'后,正则表达式匹配所有字符,直到正则表达式中的下一个条件:
(?<=title: )-这是一个积极的回溯,它告诉正则表达式匹配title:之前的文本
([^\n\r]+)-由于标题将是一个句子,因此该组通过说它不应包含换行符或回车符来匹配您想要的实际标题(这是捕获组1
(?:[\n\r]|.)*?---仅与“详细信息”部分的最后一部分匹配


此外,在替换部分,\1捕获组1 中的标题替换,因此代码应正确执行:)

答案 1 :(得分:0)

---[\s\S]*?title:([^\r\n]*)[\s\S]*?---

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

  1. 第一个捕获组([^\r\n]*):“ title:”之后的所有字符都换行。
  2. [\ s \ S] *所有字符,包括换行符,最多到“ ---”

  3. 甚至可以在同一页面上使用多个示例输入。