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

Obsidian场景:正则匹配含[[Wikilink]]的Markdown标题下层级内容

需求说明

  • 匹配标题中包含[[Wikilink]]的任意层级Markdown标题(H1-Hn)
  • 捕获该标题下方所有内容,直到遇到同级或更高层级标题,或文件结尾
  • 需适配不同层级的标题,兼容格式不一致的文件

现有正则问题分析

你当前使用的正则:

(^#+ )[\[]*?\[\[Wikilink]\][^\n]*?\n([\S\s]*?)(?1)

问题在于(?1)会严格匹配和开头完全相同的标题前缀(比如开头是## ,就只会匹配## ),但实际需要匹配同级或更高层级的标题(即#数量小于等于开头的标题),所以遇到其他层级标题时会匹配失败。

修正后的正则表达式

^(#+) .*?\[\[Wikilink]\][^\n]*\n([\s\S]*?)(?=^\1 |^\#+(?<!\1) |\Z)

正则解释

  • ^(#+) :捕获标题的层级(连续的#),并匹配标题开头的空格
  • .*?\[\[Wikilink]\][^\n]*\n:匹配包含[[Wikilink]]的标题内容,直到换行
  • ([\s\S]*?):非贪婪捕获标题下的所有内容(包括子标题、文本、空行等)
  • (?=^\1 |^\#+(?<!\1) |\Z):正向预查终止条件,满足任一即停止:
    • ^\1 :遇到和当前标题同级的标题(完全匹配捕获的#数量)
    • ^\#+(?<!\1) :遇到更高层级的标题(#数量少于捕获的数量)
    • \Z:文件结尾

适配Obsidian的注意事项

  • 确保开启正则的多行模式(m修饰符),让^和$匹配每行的开头/结尾
  • 如果需要匹配多个符合条件的标题块,添加全局模式(g修饰符)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:15:56