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

如何使用非贪婪正则表达式提取Markdown中跨多行的json标签内容

解决方案

你可以使用开启了单行模式的非贪婪匹配正则实现需求,可用的正则表达式如下:

(?s)\[json]:#\s*\(.*?\)

正则说明

  • (?s):开启单行匹配模式,让元字符.可以匹配换行符,适配多行json标签的场景
  • \[json]:#:精准匹配Markdown注释的固定开头标识
  • \s*:兼容开头标识和左括号之间可能存在的空格、换行
  • \(:匹配json内容的起始左括号
  • .*?:非贪婪匹配任意字符,会在命中第一个右括号\)时停止匹配,避免跨标签捕获
  • \):匹配json内容的结束右括号

使用示例

替换你原有代码中的正则即可:

# 提取所有json标签
($md | Select-String '(?s)\[json]:#\s*\(.*?\)' -AllMatches).Matches.Value

# 提取第2个json标签(索引从0开始计数)
($md | Select-String '(?s)\[json]:#\s*\(.*?\)' -AllMatches).Matches[1].Value

如果你需要直接提取标签内的纯json内容,只需要添加捕获组即可,正则修改为:

(?s)\[json]:#\s*\((.*?)\)

提取纯json的示例:

# 提取第2个标签内的json字符串
($md | Select-String '(?s)\[json]:#\s*\((.*?)\)' -AllMatches).Matches[1].Groups[1].Value

你拿到纯json字符串后就可以直接用ConvertFrom-Json命令解析成PowerShell对象做后续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:15:02