1

在一个代码分支中,我将所有代码从 更改obj.varnameobj("varname"),当我比较代码时,我想忽略这些差异,因为它们varname是相同的。

我有一个我认为需要的正则表达式,但遗憾的是无法使用 Scooter 的 Beyond Compare 忽略比较

^obj\("\w*"\)|obj\.\w*$

我正在关注本教程http://www.scootersoftware.com/support.php?zz=kb_unimportantv3

所以我的问题是:这甚至可能无法比拟吗?如果是,请分享一个解决方案,包括说明或发布您的屏幕截图。

4

1 回答 1

3

Beyond Compare 3 的专业版通过其文本替换功能支持这一点。如果您已经购买了标准版许可证,则需要恢复到试用模式进行测试: http ://www.scootersoftware.com/suppo...?zz=kb_evalpro

  1. 在文本比较中加载您的两个文件。
  2. 从“会话”菜单打开“会话设置”对话框,然后在“替换”选项卡上单击“新建”以创建新的替换。
  3. 在要查找编辑的文本中,使用(\w+)\.(\w+)
  4. 替换为编辑中,使用$1("$2")
  5. 选中正则表达式复选框。

另一种方法是将任何实例标记为obj.varnameobj("varname")不重要。基本步骤是这样的:

  1. 在文本比较中加载您的两个文件。
  2. 从“会话”菜单打开“会话设置”对话框,然后在“重要性”选项卡上单击“编辑语法...”按钮。
  3. 在下一个对话框中,单击顶部列表框下方的New...按钮。
  4. 将元素名称字段更改为有用的名称(例如“PropertyAccess”)。
  5. 将Category*更改为List
  6. Text in list * edit 中,添加这两行:

    obj.varname
    obj("varname")

  7. 单击确定关闭语法项对话框,然后再次单击确定关闭文本格式*语法项。

  8. 在“会话设置”对话框的“语法元素”列表框中取消选中“PropertyAccess”(或您命名的任何名称),然后单击“确定”将其关闭。

这种方法不够灵活或干净。在上面的步骤中,您正在匹配特定的硬编码对象和变量名称,因此obj.varname不重要但不重要obj.othervar,即使它与obj("othervar"). 如果两边的文字都不重要,那么差异将不重要;如果一侧很重要,那将是一个重要的区别。因此,通过上述步骤,obj.varname并且obj("varname")在任何地方都不重要,但它会正常工作,因为它们要么匹配到也匹配这些定义(因此不重要)的其他情况,要么匹配到其他不匹配的情况这个定义很重要,也会使差异变得重要。

您可以使用正则表达式来匹配更一般的文本类别,但您可能不想这样做。例如,如果您想匹配遵循该模式的所有文本,您可以使用以下两行代码:

\w+\.\w+
\w+\("\w+"\)

然后检查语法项目对话框中的正则表达式复选框,以便它们以这种方式匹配。

这样做的好处/坏处是任何与这些模式匹配的文本都不重要。 abc.newvarvs.def.varname会被认为是一个不重要的区别,因为双方都符合不重要的定义。这对于诸如注释或空白更改之类的事情很有用,但可能不是您想要在这里做的。

于 2012-08-15T16:19:29.563 回答