You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用正则表达式移除Jekyll前置分隔符(---)间的空白行?

嘿,刚上手正则就敢折腾Jekyll的批量处理,已经超棒了!我懂你那种删完分类行却留一堆空行的烦躁,而且还怕正则误删正文里的换行,确实头疼😅

咱们一步步来解决,核心是只针对---包裹的Front Matter区域清理空行,不碰文档正文。以下是适配常用工具(比如VS Code、Sublime Text这类支持多行正则的编辑器)的方案:

第一步:先确认工具设置

不管用什么编辑器,先打开正则替换模式(一般是个.*按钮),确保开启多行模式(部分工具需要手动加(?m)在正则开头,VS Code默认支持多行匹配)。

方案1:分两步处理(更直观,适合新手)

1. 删除categorysubcategory

用这个正则查找:

(?m)(?<=---\n)^(category|subcategory):.*\n

替换为空字符串。

  • 简单解释:
    • (?m):开启多行模式,让^能匹配每行开头
    • (?<=---\n):限定当前行在---开头的行之后(也就是在Front Matter范围内)
    • ^(category|subcategory):.*\n:精准匹配以category:subcategory:开头的整行,包括末尾的换行

2. 清理Front Matter里的空行

用这个正则查找:

(?m)(?<=---\n)^(\s*\n)(?=.*?^---$)

替换为空字符串。

  • 简单解释:
    • ^(\s*\n):匹配全是空白字符(空格、制表符)加换行的空行
    • (?=.*?^---$):限定当前空行后面能找到结尾的---行,确保只清理Front Matter内部的空行,不会误碰正文

方案2:一步到位(合并删除分类行+清理空行)

如果想少操作一次,可以用这个正则直接匹配category/subcategory行及其后面的所有连续空行:

(?m)(?<=---\n)^(category|subcategory):.*\n(\s*\n)*

替换为空字符串即可。

重要提醒

先拿1-2个Markdown文件测试替换效果,确认没问题再批量处理所有文件——毕竟正则批量操作一旦出错,恢复起来挺麻烦的😉

内容的提问来源于stack exchange,提问作者Christian

火山引擎 最新活动