iOS:正则表达式:匹配带引号的字符串或不带引号的字符串

iOS: Regular expression: match either quoted string or string without quotes

我需要匹配从两边引用的字符串或根本没有前导和尾随引号的字符串。 我需要省略末尾带有单引号的字符串 - 前导引号或尾随引号。

这是我必须匹配的字符串:

我有不匹配:

我正在尝试这样的事情:^\b.+|^\".^\"\b$

以下应该有效:

^([^\"]*|\".*\")$

任何非"字符
" + 文字 + "

或者,如果您不想捕获,请添加 ?:

^(?:[^\"]*|\".*\")$

regex101 Link

如果没有正则表达式,这项任务可能会更容易完成:

if ([s hasPrefix:@"\""] == [s hasSuffix:@"\""]) {
    // String matches
}

最有可能的是,根据文档在此处使用 == 是安全的,两种方法 return YES 都成功,而不是任意的非零值。但为了安全起见,您可以按照 here

所述比较 BOOL