我需要区分同一个应用程序的两个不同版本。这些文件使用许可证进行签名,并且许可证已更改。
我不希望包含仅许可证差异的文件被标记为不同。
我使用Meld
作为差异软件,它允许正则表达式。
<?php
/**
*
* NOTICE OF LICENSE
*
* This source file is subject to the License ....
*
*/
有类似的问题,但没有一个对我有用:
正则表达式尝试:
\/\*.*?\*\/|\/\/.*?\n
~//?\s*\*[\s\S]*?\*\s*//?~
实际上这个看起来有效,但我不确定它是否过滤过多:
\*.*
更新: 这是不可能的:https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html
虽然Meld中的过滤器代码很乐意接受覆盖(并删除)多行的正则表达式,但这会导致diff看到的文本与我们显示的文本之间的行不匹配,因此所有更改块都将是错误的。
不同的方法是在将文件处理成融合之前从文件中删除这些行。
\s*\/\*.*|\s*\*.*
显然meld不接受所有python正则表达式作为文本过滤器,没有多行也没有“|”在括号内。因此,此解决方案排除以星号开头的行和带有可选空格的“/ *”。它不会精确地过滤掉所有的PHP注释,但可能适用于您的文件。
另外看看:https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html
这个正则表达式更易于多行使用:
.*\/\*[^\/]+\/\s