在 Lint 中匹配括号后的第一行

在 Lint 中匹配括号后的第一行

我正在为编程语言制定自定义规则皮棉到 :

  • 匹配 , 之后的一个或多个空行{,并且
  • 另一条规则是匹配之前的空行}

作为此代码中的一个例子,我希望这些规则匹配第 2 行和第 5 行:

class Test {                   /* Line 1 */
                               /* Line 2 */
  func example() {             /* Line 3 */
  }                            /* Line 4 */
                               /* Line 5 */
}

我曾尝试通过积极的前瞻/后瞻来做到这一点,但没有成功(?<=\{)\n

有人可以帮忙吗?

更新:

在示例中添加了空格。

class Test { 

  func example() { 
  }

}

答案1

这符合你的要求:

\{\h*\R\K\h*\R|\R\K\h*\R(?=\h*\})
//added__^^^

解释:

  \{    : open brace
  \h*   : 0 or more horizontal spaces
  \R    : any kind of line break
  \K    : forget all we have seen until this position
  \h*   : 0 or more horizontal spaces
  \R    : any kind of line break
|       : OR
  \R    : any kind of line break
  \K    : forget all we have seen until this position
  \h*   : 0 or more horizontal spaces
  \R    : any kind of line break
  (?=   : positive lookahead
    \h* : 0 or more horizontal spaces
    \}  : close brace
  )     : end lookahead

相关内容