使用cscope查找/替换包含字符“*”的文本字符串

时间:2016-01-30 11:30:45

标签: regex string cscope

cscope程序允许查找/替换分布在许多文件中的完整C代码中的文本,并轻松浏览源代码。有谁知道如何使用cscope搜索和替换包含字符'*'的模式?

每当我查找包含'*'的字符串时,我总是会收到错误消息“找不到文本字符串:* ptr”(这里我查找了代码中存在的'* ptr')。

根据cscope的源代码(我使用的是15.7a版),“findstring”只会逃避字符'。 * [\ ^ $ +? | ()'with'\'然后搜索egrep模式('find.c'@ line 474)。

直接在给定文件上使用egrep并使用'\'转义'*'。使用cscope查找egrep模式而不是字符串也不起作用。

2 个答案:

答案 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)

你可以随时使用旧技巧来放置魔法角色"到一个字符类([...]),以匹配它们作为文字字符。

使用[*]查找文字星号符号。