cscope程序允许查找/替换分布在许多文件中的完整C代码中的文本,并轻松浏览源代码。有谁知道如何使用cscope搜索和替换包含字符'*'的模式?
每当我查找包含'*'的字符串时,我总是会收到错误消息“找不到文本字符串:* ptr”(这里我查找了代码中存在的'* ptr')。
根据cscope的源代码(我使用的是15.7a版),“findstring”只会逃避字符'。 * [\ ^ $ +? | ()'with'\'然后搜索egrep模式('find.c'@ line 474)。
直接在给定文件上使用egrep并使用'\'转义'*'。使用cscope查找egrep模式而不是字符串也不起作用。
答案 0 :(得分:1)
你碰巧选择了一个有缺陷的cscope版本。据报道,它不是在15.8a版本中工作,而是在15.5工作,因此介于两者之间。它再次被修复并在15.8b中按预期工作。
#87 special char escaping broken in 15.8 in egrep
的更多详情您正在使用egrep
命令行实用程序进行测试,但这不是cscope使用的实用程序。 cscope正在使用自定义正则表达式实现,请参阅src/egrep.y
。那个小虫就在那里。
答案 1 :(得分:1)
你可以随时使用旧技巧来放置魔法角色"到一个字符类([...]
),以匹配它们作为文字字符。
使用[*]
查找文字星号符号。