我们有一个swiftlint规则,基本上在我们的结构,类和协议(DC,DB或DM取决于函数)上强制执行前缀 . 我们希望仅将此匹配到顶级对象,例如在下面的例子中,我只想 TopLevel
和 SecondTopLevel
抛出一个错误:
class TopLevel {
struct NotTopLevel {
var test
}
}
class SecondTopLevel {
}
我们当前的正则表达式如下: (struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{
,这将匹配 TopLevel
和 NotTopLevel
. 我想以某种方式给一些正则表达式(或其他一些swiftlint工具)不匹配 NotTopLevel
,但仍匹配 TopLevel
和 SecondTopLevel
. 这可能吗?有关如何做到这一点的任何想法?
我一直试图模仿的方法是在检查我们的前缀之前查找0个或更多先前的类定义,但是,我遇到了在检查前缀之前尝试匹配整个类一次或多次的问题 .
1 回答
您可以使用
所以你只匹配第一个结构类或协议 .