Home Articles

匹配一个字符串,前面没有空格

Asked
Viewed 432 times
0

我有一个正则表达式: (struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{ 基本上匹配任何没有前缀为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...$ 的组合,但都无济于事 . 我'm not sure what the appropriate regex would be to trigger a match only when there'没有空格(即该行的第一个字符是一个字母)

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

1 Answer

  • 2

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

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

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

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

Related