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

如何从Markdown代码块字符串中提取指定代码内容?

提取被```包裹的目标字符串

针对你遇到的从各种带```标记的文本里精准提取console.log()这类内容的需求,你参考的这个正则方案其实已经能很好解决问题了,我再补充几个细节让它更适配不同场景:

首先看你用的核心正则:

var code = s.match(/```([^`]*)```/)[1]

这个逻辑很清晰:用```作为起始和结束标记,捕获中间所有不是的字符,刚好能把你要的console.log()`(不管前后有没有空格)抓出来。不过可以做几个小优化:

  • 处理多匹配场景:如果文本里可能存在多个```包裹的块,直接用match只会返回第一个结果。要是想提取所有匹配内容,可以加上全局标志g,再通过映射清理掉标记:
    // 提取所有被```包裹的内容,返回数组
    var allCodes = s.match(/```([^`]*)```/g)?.map(item => item.replace(/```/g, '')) || [];
    
  • 清理前后空格:你的示例里有的和内容之间带空格(比如 console.log() ),有的不带(console.log()```),如果想要纯console.log(),可以给捕获到的结果加个trim():
    var cleanCode = s.match(/```([^`]*)```/)[1].trim();
    

拿你的几个测试案例验证下:

  • 对于 <pre><code>``` console.log() ``` Hello </code></pre>,捕获后trim就能得到干净的console.log()
  • 对于 <pre><code>Hello ```console.log()``` </code></pre>,同样能精准提取到目标内容

这个正则也能应对极端情况,比如中间出现单个(比如```console.log(test)```),因为它是以连续的```作为边界,单个不会触发结束匹配,完全符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:51