JavaScript 正则表达式取代 YAML frontmatter

JavaScript Regex to replace YAML frontmatter

提问人:johnwargo 提问时间:3/26/2023 最后编辑:johnwargo 更新时间:4/4/2023 访问量:165

问:

我正在构建一个 nodejs 包,该包从文件中读取 YAML 前端内容。我使用 YAML 包获取 YAML,将其转换为 JSON 并对其进行更改。

现在我希望能够替换整个前端,但找不到正则表达式来这样做。

templateFile = templateFile.replace(SOME-REGEX-EXPRESSION, YAML.stringify(frontmatter)

我可以在这里使用什么正则表达式来实现此目的?

JavaScript 正则表达式 yaml-front-matter

评论


答:

2赞 Destroy666 3/26/2023 #1

修改后问题的新答案

/---\n.*?\n---/s

此正则表达式匹配 frontmatter,包括 start 和 end。与旧的正则表达式相比,您只需要不使用前瞻。---

旧答案

您可以使用它来匹配 frontmatter,而无需:---

/(?<=---\n).*?(?=\n---)/s

故障:

  • (?<=---\n)- 积极的后视匹配,然后是新行---
  • .*?- 懒洋洋地匹配任何东西
  • (?=\n---)- 积极展望新行之前的匹配---
  • s- 标记点也匹配换行

演示

评论

0赞 johnwargo 4/4/2023
这很好用,谢谢,但是我如何将其包含在结果中?事实证明,我必须完全替换 Frontmatter 块,而不是 frontmatter 块中的内容。---
0赞 johnwargo 4/4/2023
谢谢,我接受您的解决方案作为我问题的正确答案,我很抱歉没有对答案投赞成票。我编辑了问题以反映需要,你能帮我吗?
0赞 johnwargo 4/11/2023
非常感谢你,这对我有帮助。我意识到我必须适应 Unix 和 DOS 行结尾,这样就可以解决/---[\r\n].*?[\r\n]---/s