我在Xcode中收到了警告: Unknown escape sequence '\]'
问题代码: _regexForFindingTags = [[NSRegularExpression alloc] initWithPattern:@"\[.*?\]" options:ops error:&error];
有问题的搜索模式: \[.*?\]
为什么此特定搜索模式有警告?
如何克服这种警告?
我的搜索模式在Regex Tester中工作(授予Javascript)。根据{{3}},使用]
字符可以逃避\
字符,所以我错过了一些内容......
答案 0 :(得分:6)
您的编译器会收到一个解析字符串文字的警告,而不是来自正则表达式引擎。由于字符串文字也存在转义,序列@"\["
除了正则表达式语法之外只是语法错误(毕竟它只是字符串,对吧?)。因此,如果原始正则表达式为\[.*?\]
,则必须将其转换为:
[… initWithPattern:@"\\[.*?\\]" …];
即。你在正则表达式级别转义括号,然后在字符串文字级别转义反斜杠,因此@"\\[.*?\\]"
在内存字节中变为\[.*?\]
。
答案 1 :(得分:1)