4

我正在使用 Swiftlint 在我们的代码库中执行一些实践。我想添加一个自定义规则,以确保 a{始终出现在换行符之后。我以为我知道正则表达式,但似乎无法弄清楚。我只是检查一行是否在{. 之后允许有东西{

我现在拥有的:

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() {

}
4

1 回答 1

4

您的(\S+.*\{)正则表达式匹配任何不是空格的字符(一个或多个重复 - \S+),然后匹配除换行符以外的任何字符(包括非空格- 这是问题的根本原因),以及{.

您可以使用

\S[ \t]+\{

请参阅正则表达式演示

详情

  • \S- 任何非空白字符
  • [ \t]+- 一个或多个 ( +)水平空白(可以替换为匹配所有水平 Unicode 空白且不带制表符的[\t\p{Zs}]+位置)。\p{Zs}
  • \{- 文字{符号。
于 2017-03-09T08:25:36.207 回答