在代码的一个分支中,我将所有代码从obj.varname更改为obj("varname"),当我比较这些代码时,我希望忽略这些差异,因为varname是相同的。
我有一个我认为我需要的正则表达式,但不幸的是,我不能使用Scooter中的Beyond Compare获得要忽略的比较
^obj\("\w*"\)|obj\.\w*$
我正在学习本教程http://www.scootersoftware.com/support.php?zz=kb_unimportantv3
所以我的问题是:在beyond compare中,这是可能的吗?如果是,请分享解决方案,包括说明或发布您的屏幕截图。
发布于 2012-08-16 00:19:30
Beyond Compare 3的专业版通过其Text Replacements功能支持此功能。如果您已经购买了标准版许可证,则需要恢复到试用模式进行测试:http://www.scootersoftware.com/suppo...?zz=kb_evalpro
将您的两个文件加载到文本比较中。
$1("$2")
<
>H229>< replacement.
E127><>E228>复选框。H229>另一种方法是将obj.varname和obj("varname")的任何实例标记为不重要。基本步骤如下:
将您的两个文件从Session菜单加载到文本中,然后在Importance选项卡上单击编辑语法...<代码>E244按钮。在下一个对话框中,单击顶部E151元素名称字段下面的E147新建...E248按钮。编辑列表类别*要编辑列表中的文本*,请添加以下两行:
obj.varname
obj("varname")
这种方法不是那么灵活或整洁。在上面的步骤中,您将匹配特定的、硬编码的对象名和变量名,因此obj.varname不重要,但obj.othervar不重要,即使它与obj("othervar")对齐。如果两边的文本都不重要,那么差别就不重要;如果一边很重要,那就是重要的差别。因此,通过上面的步骤,obj.varname和obj("varname")在任何地方都不重要,但它将正常工作,因为它们要么匹配到也与这些定义匹配的其他案例(因此不重要),要么匹配到与该定义不匹配的其他案例,这将是重要的,这将使差异变得重要。
您可以使用正则表达式来匹配更一般的文本类别,但您可能不想这样做。例如,如果您希望匹配遵循该模式的所有文本,则可以使用以下两行:
\w+\.\w+
\w+\("\w+"\)然后选中Grammar Item对话框中的Regular expressions复选框,这样它们就会以这种方式匹配。
这样做的好处/坏处是,任何与这些模式匹配的文本都不重要。abc.newvar和def.varname将被认为是不重要的区别,因为双方都符合不重要的定义。这对于注释或空格更改之类的事情很好,但可能不是您想要在这里做的。
https://stackoverflow.com/questions/11970613
复制相似问题