是否有一个 diff 工具可以让我编写正则表达式来从差异中删除一行?
就像,看到两行:
this.Visible = true;
Visible = true;
我可以写一个表达式,如果行差异完全this
忽略差异。
我该如何具体做到这一点?
我再举一个例子。LikeSystem.Exception
和Exception
两者对我来说都是一样的,我不想在差异中显示它们。
SourceGear 的DiffMerge支持这一点。您需要创建一个与您正在合并的文件匹配的规则集或编辑默认规则集。在规则集中将模式添加到 Lines to Omit 属性。有关详细信息,请参阅联机帮助中的省略行属性。
我用过的最好的资源比较软件是Beyond Compare。有了它,您可以完全按照您的要求做:输入一个正则表达式,告诉软件忽略某些差异。但是,它不是免费的。
如果你真的需要一个免费的应用程序,你可以试试WinMerge。不过,我不是很喜欢这个界面。
Notepad++有一个可配置的比较插件。
如果您找不到可以满足您需求的现有差异工具,您可以编写自己的。
Python 有一个diff 模块,用于编写类似 diff 的工具,它将为您处理 diffing 算法的所有复杂性。他们有一个示例脚本,可以在 60 行代码中以标准 Unix差异/补丁格式或并行 HTML 进行文件差异。
模块中的差异允许您定义“垃圾”过滤器以预处理行以删除您不希望包含在差异中的部分。这些是 Python 函数,因此您不仅限于正则表达式匹配。
我快速重新阅读了文档,过滤器仅适用于忽略整行或单个字符,这不是您想要的。但是,您可以轻松地预处理您输入到差异中的数据,以删除您想要忽略的文本。
我无法在任何软件中找到该功能,尽管 Beyond Compare 和 Araxis 具有此功能。
从 WinMerge wiki 看来,它们在新的未来将不支持插件或任何此类功能。太糟糕了。
如果您知道如何编写 JavaScript,您可以将相关的正则表达式插入到Pretty Diff工具的缩小部分。该工具是完全免费的,代码完全开放,带有内联文档。
如果您希望将特定功能添加到工具中,除了个人定制之外,请告诉我,我会添加它。
试试GNU diffutils。如果您在 Windows 上,您可以从 www.cygwin.com 获得随Cygwin一起分发的 GNU diff 。