提问人:johnwargo 提问时间:3/26/2023 最后编辑:johnwargo 更新时间:4/4/2023 访问量:165
JavaScript 正则表达式取代 YAML frontmatter
JavaScript Regex to replace YAML frontmatter
问:
我正在构建一个 nodejs 包,该包从文件中读取 YAML 前端内容。我使用 YAML 包获取 YAML,将其转换为 JSON 并对其进行更改。
现在我希望能够替换整个前端,但找不到正则表达式来这样做。
templateFile = templateFile.replace(SOME-REGEX-EXPRESSION, YAML.stringify(frontmatter)
我可以在这里使用什么正则表达式来实现此目的?
答:
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
评论