2016-09-19 86 views
1

我試圖捕捉錯誤在崇高的文本3編碼時,我得到的錯誤是這樣的:捕獲錯誤3

filename.extension:lineNumber: error: "The error message" 
      Code that = is.wrong(); 
         ^<--Arrow pointing to the error 

我正則表達式捕獲碼是

"result_file_regex": "^(...*?):([0-9]*): error: (.*)" 

其中根據this文件應是正確的,除了沒有列號來捕獲。

每當我試着用這個正則表達式是錯誤的崇高輸出

str expected, not dict 

我在做什麼錯誤的運行錯誤的代碼?

+0

準確的錯誤輸入是什麼?您可以逼真地讓行/列號可選, ([0-9] *)? –

+0

我不認爲它允許正斜槓包裝RegEx,正如您通常會做的那樣 – idleberg

+2

請編輯您的問題以添加更多細節請創建一個[mcve]。添加示例代碼(包括語言)和構建系統的內容,以便測試其行爲。請說明錯誤的打印位置,以及是否還有其他內容。你還應該指出你在哪裏放置''result_file_regex'''設置。基本上,你應該允許我們徹底重建你正在做的事情。 – MattDMo

回答

0

result_file_regex 甲Perl樣式的正則表達式來捕獲到的從結果來看,即誤差信息四個字段:文件名,行號,列號和錯誤消息。使用模式中的組來捕獲這些信息。文件名字段和行號字段是必需的。

http://docs.sublimetext.info/en/latest/reference/build_systems/configuration.html?highlight=result_file_regex

它說,在文檔 「result_file_regex」,但這是錯誤的,因爲重點建設 「file_regex」。

我們如何匹配是這樣的:

filename.extension:lineNumber: error: "The error message" 

讓我們先從最簡單的比賽,該文件名和行號:

"file_regex": "^([^:]+):([0-9]+):.*$" 

以上的文件名和行號相匹配(兩場比賽)。

"file_regex": "^([^:]+):([0-9]+):([0-9]+)?.*$" 

以上匹配文件名,行號和可選列號。

"file_regex": "^([^:]+):([0-9]+):([0-9]+)? error: (.+)$" 

上述匹配所有四個元素:文件名,行號,列號(可選),和錯誤消息。

+0

這太棒了!非常感謝! – Squeek