【发布时间】:2017-03-12 02:52:31
【问题描述】:
我需要区分同一应用的两个不同版本。 这些文件使用许可证进行签名,并且该许可证已更改。
我不希望包含仅许可证差异的文件被签名为不同的。
我使用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 看到的文本与 我们显示的文本,所以所有的更改块都是错误的。
不同的方法是在将文件处理成meld之前从文件中删除这些行。
【问题讨论】:
-
你能说出你尝试的具体模式吗?
-
请先尝试一些简单的正则表达式,看看它是否有效,例如
\d+来匹配数字。 -
我试过了,它工作正常(例如,如果许可证在一侧显示 2006,在另一侧显示 2009,这不算作差异)
-
@rock321987 我很不擅长正则表达式,我一直忘记它们......我已经尝试过上述答案中的模式,但没有任何运气(我会将它们添加到问题中)
-
在融合中按“Ctrl+H”并使用此正则表达式:-
(?s)/\*(.*?)\*/或/\*([\S\s]*?)\*/