我有数百个C函数,比如
void test()
{
<content of function>
}
(函数可能有返回值UBYTE
,BOOL
,WORD
,...)
现在我想在所有函数中添加一个文本,如下所示:
void test()
{
LABEEL_BEGIN
<blank line>
<content of function>
<blank line>
LABEL_END
}
所以我需要在函数的开头插入LABEL_BEGIN
和一个空行,并在函数末尾插入一个空行和LABEL_END
。
我认为这可能是一些俗气的正则表达式!?或者是否有可用的文本编辑器具有这样的功能?目前,我有MS Studio 2013 IDE,Notapad ++,Textpad,PSpad以及GNU grep 2.4.5命令行工具。
答案 0 :(得分:0)
以下正则表达式将选择每个void,它的名称,任何参数以及它的第一个开口大括号。如果您将此与输入匹配,则可以使用匹配索引和匹配长度来查找void内部内容的起始索引。然后,您可以在索引处添加其他内容。
(void [\w_][\w\d_]*\(.*\)(\r|)(\n|){)
欢迎在这里玩弄它:https://regexr.com/3jarc
要结束此功能,您可以使用上面的正则表达式作为正向后看,然后匹配结束'}'。
答案 1 :(得分:0)
支具柜台怎么样?
您打开源代码文件,然后通过char读取char。 每次你有'{',你增加brace_counter,每次你有'}',你就减少它。
如果你发现'{'并且计数器在递增之前是0,那么你就有了函数的开头。 如果你发现一个'}'并且在减量后对手是0,你的功能就会结束。
这可行吗?或者有一些棘手的C语法会破坏它?