2015-01-08 54 views
0

我們在程序中記錄處理異常的方式是調用catch塊上的Logger類。搜索不包含特定表達式的多行文本

我們發現我們的try/catch塊中有幾個遺漏了這個記錄器。我想創建一個正則表達式來找出那些包含catch塊的塊在哪裏,而不需要調用Logger類。

隨着我的正則表達式的知識有限,我想出了這個:

catch[\s\S]+?{[\s\S]+?(?!log)[\s\S]+?} 

但似乎這個方法返回任何 catch塊,而不是那些不含單詞「日誌」內其中。

我在做什麼錯誤/如何修復我的正則表達式?

編輯

通緝代碼(正則表達式應該回報這個)

catch (SomeException e) 
{ 
    Log(e); 
} 

錯誤代碼(正則表達式應該返回此)

catch (SomeException e) 
{ 
    //Something 
} 
+4

一個例子會更好。 –

回答

2

的微小變化會幫助你

/catch[^{]+{(?![^}]+log)[^}]+}/i 

Regex Demo

的變化,而使用[\s\S]讓使用[^{][^}]被否定它不會匹配在任何類字符類可以少更具體提出

  • [^}]移到前面。現在(?![^}]+log)確保在catch區塊內沒有log

+0

感謝您的幫助和解釋! :) –

+0

@TzahMama你是alwyas歡迎:) – nu11p01n73R

相關問題