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

时间:2017-01-24 18:13:30

标签: regex

我有一个正则表达式:(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...$的组合,但都无济于事。我不确定只有当没有空格时(即行上的第一个字符是字母)才能触发匹配的正确的正则表达式

P.S。我在iOS项目中使用swiftlint来强制执行命名参数,如果这对答案产生任何影响(它不应该)

1 个答案:

答案 0 :(得分:2)

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

^

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

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