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

如何用C++ AST匹配含指定关键词的translate函数调用?

Clang AST匹配器:筛选参数含特定字符串的translate调用

要找出所有调用translate且第一个参数包含"Hello"的代码,你可以在现有匹配器基础上,给stringLiteral添加正则匹配规则来筛选字符串内容,具体修改如下:

修改后的匹配器代码

callExpr(
    callee(functionDecl(hasName("translate"))),
    hasArgument(0, stringLiteral(hasString(matches(".*Hello.*"))))
);

关键说明

  • hasString(matches(".*Hello.*")):通过正则表达式.*Hello.*匹配所有内容中包含"Hello"子串的字符串字面量,.*表示任意长度的任意字符(包括空字符)
  • 如果需要大小写不敏感匹配,可将正则改为".*[Hh]ello.*",部分Clang版本也支持通过matches(".*hello.*", ignoreCase)开启忽略大小写
  • 若现有Clang版本不支持matches,也可以尝试使用contains谓词,写法为stringLiteral(hasString(contains("Hello")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:09:59