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

如何让ast-grep规则仅匹配最外层对象而非内部对象?

用ast-grep实现仅匹配最外层对象

可以通过ast-grep的stopBy配置实现仅匹配最外层对象,避免匹配嵌套的内部对象。

规则配置

rule:
  pattern: const obj = {$$$}
  kind: object
  stopBy:
    kind: object

测试源代码

const obj = {
    a: 1,
    b: {
        c: 1
    }
}

const obj2 = {
    d: 1,
    e: {
        f: 1
    },
    g: {
        h: 0
    }
}

预期匹配结果

// match 1
{
a: 1,
b: {
c: 1
}
}

// match 2
{
d: 1,
e: {
f: 1
},
g: {
h: 0
}
}

原理说明

stopBy的作用是:当ast-grep遍历AST结构时,一旦遇到指定类型(这里是object)的节点,就停止向下深入匹配。这样就能确保只捕获最外层的对象节点,不会误匹配内部嵌套的子对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:21:04