匹配前面没有空格的字符串



我有一个正则表达式:(struct|class|protocol)s(?!(func|DB|DC|DM))[^nr]+{基本上匹配任何不以DC,DB或DM为前缀的classstructprotocol定义。这工作正常,但我们希望它仅与顶级声明匹配。为此,我尝试仅匹配前面不包含空格的声明,即

class ThisClassMatches { // this class triggers a match
    struct ThisStructDoesNotMatch { // This struct shouldn't trigger a match
    }
}

我尝试了很多[^s]([^s]|[^S])^[^s]...regex...$的组合,都无济于事。我不确定只有在没有空格时才触发匹配的适当正则表达式是什么(即,行上的第一个字符是字母)

附言我正在 iOS 项目上使用 swiftlint 来强制执行命名参数,如果这对答案有任何影响(它不应该)

您可以使用

前导锚点,^,这将要求字符串/行(取决于正则表达式的使用位置和修饰符)从下一个字符串开始。例如:

^(struct|class|protocol)s(?!(func|DB|DC|DM))[^nr]+{

演示:https://regex101.com/r/4sL09E/1(无修饰符)

https://regex101.com/r/4sL09E/2(带修饰符)

最新更新