J. *_*fer 6 c++ regex linux svn diff
每当我在svn中进行提交循环时,我会在编写注释时检查差异.我认为在显示差异时显示我进行修改的实际功能真的很棒.
我查看了这个页面,其中提到-p选项将显示更改所在的C函数.但是,当我尝试将-p选项与某些C++代码一起使用时,它通常会返回访问说明符(私有,公共,受保护等),这不是非常方便.
我注意到diff的-F选项与-p相同,但是采用用户指定的正则表达式. 我想知道:是否有一个简单的正则表达式来匹配C++函数?似乎只有这一切才能让它发挥作用.
我花了一些时间自己看这个,但工作处于紧缩模式,这似乎很多人会发现有用的东西,所以我想我会在这里发布.
编辑:我不是在寻找一个大满贯扣篮式正则表达式的东西,但是只需在区域差异上方找到最接近的函数定义的东西就会显示出来.事实上它不会完美,而且有些马车对我来说没问题.只要它正常工作,就像60%的时间将是一个显着的生产力提高恕我直言.
是否有一个简单的正则表达式来匹配 C++ 函数?不。
是否有一个(复杂的)正则表达式来匹配 C++。也许或者可能可以写一个。
但我想说,正则表达式既不容易完成这样的任务(假设您想要某种excat匹配),也不是完成这样的任务的正确工具。
想想像这样的例子。你会如何处理这些东西。
void (*function(int, void (*)(int)))(int);
func1(int), func2(double); double func3(int);
Run Code Online (Sandbox Code Playgroud)
唯一真正的解决方案是使用 yacc/lex 的解析器。对于您的用例来说,这当然没有任何作用。
因此,要么将一些不完整的正则表达式组合在一起,使其适合代码中的大多数函数签名