我需要区分同一应用程序的两个不同版本。这些文件是用许可证签名的,并且该许可证已更改。
我不希望包含仅许可证差异的文件被签名为不同的。
我使用Meld
作为diff软件,它允许使用regex。
<?php
/**
*
* NOTICE OF LICENSE
*
* This source file is subject to the License ....
*
*/
也有类似的问题,但没有一个对我有效:
RegEx删除/***和//***//php注释
如何执行忽略所有注释的diff?
Regex尝试:
'/'*.*?'*'/|'/'/.*?'n
~//?'s*'*['s'S]*?'*'s*//?~
事实上,这个看起来有效,但我不确定它过滤得太多:
'*.*
更新:
这是不可能的:https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html
而Meld中的过滤器代码将愉快地接受覆盖(和删除(多行的regex,这导致diff看到的文本和我们显示的文本,因此所有的更改块都将是错误的。
不同的方法是在将这些行处理为meld之前将其从文件中删除。
's*'/'*.*|'s*'*.*
很明显,meld不接受所有的python正则表达式作为文本过滤器,括号内没有多行或"|"。因此,该解决方案排除了以星号开头的行和带有可选空格的"/*"。它并不能准确地过滤掉所有php注释,但很可能适用于您的文件。
还可以看看:https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html
此正则表达式更易于多行使用:
.*'/'*[^'/]+'/'s