在代码分支中,我已将所有代码从obj.varname
更改为obj("varname")
,当我比较代码时,我想忽略这些差异,因为varname
是相同的。
我有一个我认为需要的正则表达式但很遗憾无法使用Scooter的Beyond Compare来忽略比较
^obj\("\w*"\)|obj\.\w*$
我正在关注本教程http://www.scootersoftware.com/support.php?zz=kb_unimportantv3
所以我的问题是:这甚至可能超越比较吗?如果是,请分享包含说明或发布截图的解决方案。
答案 0 :(得分:3)
Beyond Compare 3的专业版通过文本替换功能支持此功能。如果您已购买标准版许可证,则需要恢复到试用模式进行测试:http://www.scootersoftware.com/suppo...?zz=kb_evalpro
(\w+)\.(\w+)
$1("$2")
另一种方法是将obj.varname
和obj("varname")
的任何实例标记为不重要。基本步骤是这样的:
在列表中的文字 *编辑中,添加以下两行:
obj.varname
obj("varname")
点击确定关闭语法项对话框,然后再次点击确定以关闭文字格式 *语法项目。
这种方法不够灵活或干净。在上面的步骤中,您匹配特定的,硬编码的对象和变量名称,因此obj.varname
不重要,但obj.othervar
不重要,即使它与obj("othervar")
对齐。如果双方的文字都不重要,那么差异将是不重要的;如果一方很重要,那将是一个重要的区别。因此,通过上述步骤,obj.varname
和obj("varname")
在任何地方都不重要,但它会正常工作,因为它们要么与其他符合这些定义的情况相匹配(因此也不重要)或将会匹配其他与该定义不匹配的东西,这将是重要的,并将使差异变得重要。
您可以使用正则表达式来匹配更多常规文本类别,但您可能不希望这样。例如,如果您想匹配该模式后面的所有文本,则可以改为使用这两行:
\w+\.\w+
\w+\("\w+"\)
然后检查语法项对话框中的正则表达式复选框,以便它们以这种方式匹配。
这样做的好处是,匹配这些模式的任何文本都是不重要的。 abc.newvar
与def.varname
之间的区别将被视为不重要的差异,因为双方都会对不重要的定义进行匹配。这对于评论或空白更改等内容非常有用,但可能不是您想要在此处执行的操作。