我正在使用Swiftlint来强制执行代码库中的一些实践 . 我想添加一个自定义规则,确保在换行符后始终显示 {
. 我以为我知道正则表达式,但似乎无法弄明白 . 我只是检查一行是否包含 {
之前的空格以外的任何字符 . 在 {
之后允许有东西 .
我现在拥有的:
invalid_open_brace:
name: "Open brace should start on its own line"
regex: "(\S+.*\{)"
message: "Open brace should start on its own line"
severity: warning
以下是一些应该和不应匹配的示例字符串:
// NO MATCH
else if let var1 = var1 as? String, !var1.isEmpty
{
//NO MATCH
class Person
{
// MATCH
int()
{
}
// NO MATCH
function()
{
}
}
// MATCH
function() {
}
1 回答
你的
(\S+.*\{)
正则表达式匹配任何不是空白的字符(一个或多个reptitions -\S+
),然后除了换行符之外的任何字符(包括非空格 - 这是你的问题的根本原因),和{
.你可以用
见regex demo .
Details :
\S
- 任何非空白字符[ \t]+
- 一个或多个(+
) horizontal whitesapces(可以替换为[\t\p{Zs}]+
,其中\p{Zs}
匹配没有选项卡的所有水平Unicode空格) .\{
- 文字{
符号 .