2

我们有一个 swiftlint 规则,它基本上在我们的结构、类和协议(DC、DB 或 DM 取决于功能)上强制执行前缀。TopLevel我们只想将其与顶级对象匹配,例如在下面的示例中,我只想SecondTopLevel抛出错误:

class TopLevel {

    struct NotTopLevel {
        var test
    }

}

class SecondTopLevel {

}

我们当前的正则表达式如下:(struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{,这将匹配TopLevelNotTopLevel。我想以某种方式给一些正则表达式(或其他一些 swiftlint 工具)不匹配NotTopLevel,但仍然匹配TopLevelSecondTopLevel。这可能吗?关于如何做到这一点的任何想法?

我一直在尝试模仿的方法是在检查前缀之前查找 0 个或多个以前的类定义,但是,在检查前缀之前尝试匹配整个类一次或多次时遇到了问题。

4

1 回答 1

2

您可以使用

(struct|class|protocol).*

所以你只匹配第一个结构类或协议。

于 2017-05-09T15:27:09.103 回答