Regex 正则表达式匹配必须介于另一个匹配之间

Regex 正则表达式匹配必须介于另一个匹配之间,regex,regex-greedy,swiftlint,Regex,Regex Greedy,Swiftlint,我想匹配不同的东西,并添加条件,这些匹配必须在特定的边界之间 这是文本 protocol SceneDisplayView { func displayEmailScreen() func displayPasswordScreen() func displayNameScreen() } 到目前为止,我所做的是使用以下正则表达式查找匹配项: (?:^\s*func\s(display\w*)\(\)$) 最终结果如下: 如演示中所示: 我试图限制这些匹配,使它们必

我想匹配不同的东西,并添加条件,这些匹配必须在特定的边界之间

这是文本

protocol SceneDisplayView {
    func displayEmailScreen()
    func displayPasswordScreen()
    func displayNameScreen()
}
到目前为止,我所做的是使用以下正则表达式查找匹配项:

(?:^\s*func\s(display\w*)\(\)$)
最终结果如下:

如演示中所示:

我试图限制这些匹配,使它们必须介于
协议之间。。。{
和右括号
}


因此,如果在这些边界之外有任何浮动匹配,它们将不会出现,那么如何用一个正则表达式实现这一点呢?

不确定它是否受支持,但可能是
(?:\G(?):\G(?)| \bprotocol\h+\s+\h*{\R\h*\Kfunc\h+(display\w*)\(?=[^{}]*})
或者如果使用两个捕获组只支持
\G
(?:\G>)(?!^)|\bprotocol\s+\s*{\r?\n\s*(func\s+(display\w*)\(\)(?=[^{}]*})@Thefourthbird几乎做到了这一点,但有一个小问题,如果协议括号后的第一个func不以display开头,它将失败,尽管在协议开始和结束括号之间还有其他以display开头的func,失败示例:然后,您可以在我不确定之前添加匹配的可选单词字符
\R
\K
在swiftlint中受支持。否则您可能会尝试解决这个问题?不确定它是否受支持,但可能
(?:\G(?)\bprotocol\h+\S+\h*{)\R\h*\Kfunc\h+(display\w*)\(?=[^{}]*\}}
或者是否仅使用两个捕获组支持
(?:\G(?:\G!^}\bprotocol+(显示\w*)\(\)(?=[^{}]*\})
@Thefourthbird几乎做到了这一点,但有一个小问题,如果协议括号后的第一个func不以display开头,它将失败,尽管在协议开始和结束括号之间还有其他以display开头的func,失败示例:然后,您可以在我不确定之前添加匹配的可选单词字符<代码>\R和
\K
在swiftlint中受支持。否则,您可能会尝试这样做,结果如何?