首页 文章

如何只匹配swiftlint中的顶级对象

提问于
浏览 1673
2

我们有一个swiftlint规则,基本上在我们的结构,类和协议(DC,DB或DM取决于函数)上强制执行前缀 . 我们希望仅将此匹配到顶级对象,例如在下面的例子中,我只想 TopLevelSecondTopLevel 抛出一个错误:

class TopLevel {

    struct NotTopLevel {
        var test
    }

}

class SecondTopLevel {

}

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

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

1 回答

  • 2

    您可以使用

    (struct|class|protocol).*
    

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

相关问题