You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过正则表达式提取Markdown文件中的h1和h2级标题

修正方案

你写的正则核心问题是没有限制匹配的1~2个#前方不能存在其他#,会把三级及以上标题开头的前两个#误命中,导致错误提取。

最终可用正则

/(?<!#)#{1,2} ([^\r\n]*)/gm

各部分逻辑说明

  • (?<!#):负向回顾断言,确保当前匹配的#前缀前方没有多余的#,过滤三级及以上标题
  • #{1,2}:匹配1个或2个#,对应Markdown的h1、h2级别
  • 后缀空格:匹配Markdown标题要求的#和内容之间的强制空格
  • ([^\r\n]*):捕获组,匹配除换行符外的所有字符,直接得到标题文本内容
  • gm:全局匹配+多行匹配模式,逐行扫描整个Markdown内容

用这个正则测试你给出的用例,捕获组返回的结果刚好是['first', 'second', 'fourth'],完全符合需求。
如果你的运行环境不支持负向回顾断言,也可以用符合标准Markdown规范的行首匹配写法:

/^#{1,2} ([^\r\n]*)/gm

这个写法要求标题必须出现在行首,也能过滤三级及以上标题。


内容的提问来源于stack exchange,提问作者Monkey D. Teach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:15:03