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

时间:2014-02-03 22:22:46

标签: objective-c regex xcode nsregularexpression

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

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

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

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

我的搜索模式在Regex Tester中工作(授予Javascript)。根据{{​​3}},使用]字符可以逃避\字符,所以我错过了一些内容......

2 个答案:

答案 0 :(得分:6)

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

[… initWithPattern:@"\\[.*?\\]" …];

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

答案 1 :(得分:1)

你不幸需要逃避\ 所以他们需要在NSString文字<\ p>中