2017-03-09 61 views
3

我正在使用Swiftlint在我們的代碼庫中實施一些做法。我想添加一個自定義規則,以確保{總是出現在換行符後面。我以爲我知道正則表達式,但似乎無法弄清楚。我只是在{之前檢查一行是否包含空格以外的任何字符。允許在{之後有東西。swiftlint開放大括號規則

我現在擁有的一切:

invalid_open_brace: 
    name: "Open brace should start on its own line" 
    regex: "(\S+.*\{)" 
    message: "Open brace should start on its own line" 
    severity: warning 

下面是應該和不應該與一些示例字符串:

// NO MATCH 
else if let var1 = var1 as? String, !var1.isEmpty 
{ 

//NO MATCH 
class Person 
{ 
    // MATCH 
    int() 
    { 
    } 

    // NO MATCH 
    function() 
    { 

    } 
} 

// MATCH 
function() { 

} 
+0

'''S'之前的字符''''表示您需要使用''\\ s [{]「'(檢查'{')之前是否有空格。 –

+0

@WiktorStribiżew更新了我的問題。我想匹配包含{和其他的一些空格,然後是空格之前的空格。 – Haagenti

+0

好,然後使用''\\ S [{]「'(或'」\\ S \\「」)(注意當用作字符串文字時,double ecape是必須的)。 –

回答

2

(\S+.*\{)正則表達式的任何字符不是空白(一個或多個reptitions匹配 - \S+),然後除換行符以外的任何字符(,包括非空白字符 - 這是您問題的根源)和{

您可以使用

\S[ \t]+\{ 

regex demo

詳細

  • \S - 任何非空白字符
  • [ \t]+ - 一個或多個(+水平 whitesapces(可以與[\t\p{Zs}]+更換其中\p{Zs}匹配所有水平的Unicode空白而不一個標籤)。
  • \{ - 字面{符號。
+1

非常感謝。努力和解釋的數量非常好! – Haagenti