我使用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() {
}
答案 0 :(得分:4)
你的(\S+.*\{)
正则表达式匹配任何不是空白的字符(一个或多个reptitions - \S+
),然后是除了linebreak之外的任何字符(包括非空格 - 这里是您问题的根本原因)和{
。
您可以使用
\S[ \t]+\{
请参阅regex demo。
<强>详情:
\S
- 任何非空白字符[ \t]+
- 一个或多个(+
)水平 whitesapces(可以替换为[\t\p{Zs}]+
,其中\p{Zs}
匹配所有水平Unicode空白而不标签)。\{
- 文字{
符号。