【问题标题】:NSRegularExpression Xcode warning: Unknown escape sequence '\]'NSRegularExpression Xcode 警告:未知转义序列 '\]'
【发布时间】:2014-02-27 15:09:01
【问题描述】:

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

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

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

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

我的搜索模式在 Regex Tester 中工作(当然这是在 Javascript 中)。根据Ray Wenderlich's NSRegularExpression Tutorial ] 字符应该可以使用\ 字符逃避,所以我错过了一些东西......

【问题讨论】:

  • 代码格式不正确。

标签: objective-c regex xcode nsregularexpression


【解决方案1】:

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

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

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

【讨论】:

  • 太棒了!绝对是这样,当然我必须转义 \ 才能在字符串文字中使用它! :)
【解决方案2】:

不幸的是,您需要转义 \ 所以他们需要在 NSString 文字中是 \

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多