2012-08-15 67 views
1

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

我有一个正则表达式,我想我需要但遗憾的是不能去使用除了从滑板车

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

比较我下面这个教程http://www.scootersoftware.com/support.php?zz=kb_unimportantv3

所以忽略了比较我的问题:这是甚至可能有无法比拟的?如果是,请您分享包括任何指令的解决方案或发表您的截图。

回答

3

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

  1. 加载在文本比较你的两个文件。
  2. 打开会话设置从该会议菜单对话框,并在替换选项卡中单击新建创建一个新的替代品。
  3. 要查找的文本编辑,使用(\w+)\.(\w+)
  4. 编辑替换,使用$1("$2")
  5. 检查正则表达式复选框。

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

  1. 在文本比较中加载您的两个文件。
  2. 打开会话设置会话菜单对话框以及重要性选项卡上单击编辑语法...按钮。
  3. 在接下来的对话框中点击顶部列表框中新建...按钮的下方。
  4. 更改元素名称领域的一些有用的东西(比方说, “PropertyAccess”)。
  5. 更改类别*列表
  6. 在列表 *编辑文本,添加以下两行:

    obj.varname
    obj("varname")

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

  8. 取消“PropertyAccess”(或任何你把它命名为)在语法元素列表框在会话设置对话框,然后单击OK 将其关闭。

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

您可以使用正则表达式来匹配更一般的文本类别,但您可能不想。例如,如果你想跟随这个模式,你可以使用这些两行而不是所有文本匹配:在语法项目对话框

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

再检查正则表达式复选框,以便他们匹配那样。

其优缺点是,任何文本匹配那些模式是不重要的。 abc.newvardef.varname将被视为不重要的区别,因为双方都符合不重要的定义。对于诸如注释或空白变化之类的内容来说,这很好,但可能不是您想要在此处执行的操作。

+0

这太棒了!第一个解决方案像魅力一样工作,我发现了一个我从来不知道的功能,但是第二个解决方案仍然没有。如果您不介意将所有定义为重要或不重要的语法发布出去,那么我可以重复一遍。 – kiev 2012-08-16 18:23:39

+0

@基辅我更新了第二种方法的更多细节。 – 2012-08-16 19:17:32