从markdown文件中删除YAML标头

mus*_*tze 3 ruby regex yaml replace

如何从Ruby中的文本文件中删除像这样的YAML标头:

---
date: 2013-02-02 11:22:33
title: "Some Title"
Foo: Bar
...

---
Run Code Online (Sandbox Code Playgroud)

(YAML被三个破折号( - )包围)

我试过了

text.gsub(/---(.*)---/, '') # text is the variable which contains the full text of the file
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

mus*_*tze 7

找到解决方案,正则表达式应该是:

/---(.|\n)*---/
Run Code Online (Sandbox Code Playgroud)


Jer*_*een 7

上面提到的解决方案将从的第一次出现---到最后一次出现---之间以及所有之间的匹配。这意味着,如果---稍后出现在文件中,则您不仅会删除标题,还会删除部分内容。

此正则表达式只会删除yaml标头:

/\A---(.|\n)*?---/
Run Code Online (Sandbox Code Playgroud)

\A它启动匹配对的第一个实例,确保---?使*是非贪心,这使得它在第二个实例停止匹配---