我有一个正则表达式:(struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{
基本上匹配任何不以DC,DB或DM为前缀的class
,struct
或protocol
定义。这很好,但我们希望它只匹配顶级声明。要做到这一点,我试图只匹配在它们之前不包含空格的声明,即
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来强制执行命名参数,如果这对答案产生任何影响(它不应该)
答案 0 :(得分:2)
您可以使用前导锚RenderTransform
,这将需要字符串/行(取决于正则表达式使用和修饰符的位置)从下一个字符串开始。例如:
^
演示:https://regex101.com/r/4sL09E/1(没有修饰符)