2012-08-15 65 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