我试图在代码库中找到所有我们有不明确格式说明符的地方。
例如:
int64_t fixed_size_type;
printf ("Ambiguous replacement value: %lld", fixed_size_type);
结果是:
format '%lld' expects argument of type 'long long int', but argument 5 has type 'int64_t {aka long int}' [-Wformat=]
我正在使用正则表达式搜索代码库,我希望找到%lld
的所有值,其值尚未转换为(long long)
。
使用 VSCode 搜索标签,我可以使用以下方式找到所有适当的演员事件:
%lld.*(\(long long\))
但是,我不知道如何让它向我显示(long long)
不存在的字符串?
当我尝试:
%lld(?!.*\(long long\))
VSCode 给出了以下错误消息:
Error parsing regex near 'lld(?!.*\(' at character offset 6: Unrecognized flag: '!'. (Allowed flags: i, m, s, U, u, x.)
我已经尝试了几个在类似问题的论坛中看到的例子,我试图使用正则表达式文档来加密这些例子;一切都没有用。
大多数示例建议您使用负向前瞻或后视来检查(long long)
子字符串是否存在。我以为括号成了一个块。为什么我们不能使用我只是用正向逻辑否定一个块。
不幸的是,当您使用正则表达式的工作经验很少时,很难理解正则表达式处理和语法。
注意: The duplicate suggestion提供了一个很好的解释,说明为什么它不能在 VSCode 中工作,但它仍然没有'提供我的问题的解决方案。