iOS正则表达式:未知的转义序列“\ |”

时间:2012-07-11 21:56:09

标签: objective-c ios regex nsregularexpression

我收到一个奇怪的警告,因此我的正则表达式搜索无效。这是行:

NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];

HTML是一个我确定包含上述正则表达式的匹配项的字符串。

警告仅在第一次出现“\ |”时出现,而不是在两者上出现。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:54)

您收到警告,因为\|不是Objective-C(或C或C ++)中的有效转义序列。编译器忽略了这一点而只是使用原始的|字符,因此您实际传入的字符串是@"|(.*)|"

要获得所需的行为,您必须转义源代码中的反斜杠,以便正则表达式引擎看到文字反斜杠并将|字符解释为文字而不是交替,例如@"\\|(.*)\\|"

答案 1 :(得分:0)

只是加起来,如果你正在处理unicode格式的特殊字符序列,你可以使用这样的东西:

const unichar specialCharSequence='some special character';
if(specialCharSequence==L'\uxxxx')
{
   //handle the occurence of this special character
}