【发布时间】:2017-07-30 01:52:02
【问题描述】:
我正在使用 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() {
}
【问题讨论】:
-
{之前的\S以外的字符表示需要使用"\\s[{]"(检查{之前是否有空格)。 -
@WiktorStribiżew 更新了我的问题。我想将包含 { 的行与前面的空格匹配。
-
好,然后使用
"\\S[{]"(或"\\S\\{")(注意,当用作字符串文字时,必须使用双转义符)。 -
@WiktorStribiżew 当我在regex101.com 中输入您的解决方案时,内容为:否则如果让 var1 = var1 as?字符串,!var1.isEmpty {。没有突出显示
-
什么都不会,因为
\S\{匹配.isEmpty{。您说只有在{之前有空格以外的任何内容时才需要匹配。请重新考虑您的要求,并更新您的问题。