NSRegularExpression Xcode警告:未知的转义序列'\]'

JTh*_*ora 1 regex xcode objective-c nsregularexpression

我在Xcode中收到了警告: Unknown escape sequence '\]'

问题代码: _regexForFindingTags = [[NSRegularExpression alloc] initWithPattern:@"\[.*?\]" options:ops error:&error];

有问题的搜索模式: \[.*?\]

为什么对此特定搜索模式有警告?
如何克服这个警告?

我的搜索模式适用于Regex Tester(在Javascript中授予).根据Ray Wenderlich的NSRegularExpression教程,]角色应该可以使用\角色逃脱,所以我错过了一些东西......

use*_*367 6

您从编译器收到一个解析字符串文字的警告,而不是来自正则表达式引擎.由于字符串文字也存在转义,序列@"\["只是语法错误,除了正则表达式的语法之外(毕竟它只是字符串,对吧?).所以,如果是原始正则表达式\[.*?\],则必须将其转换为:

[… initWithPattern:@"\\[.*?\\]" …];
Run Code Online (Sandbox Code Playgroud)

即你在正则表达式级别转义括号,然后在字符串文字级别转义反斜杠,因此@"\\[.*?\\]"变为\[.*?\]内存字节.