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

我得到一个奇怪的警告,结果我的正则expression式search不起作用。 这里是行:

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

其中HTML是一个string,我敢肯定包含上述正则expression式的单个匹配。

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

任何帮助深表感谢!

你收到警告,因为\| 在Objective-C(或C或C ++)中不是有效的转义序列。 编译器正在忽略这个,只使用raw | 字符,所以你实际传入的string是@"|(.*)|"

为了得到你想要的行为,你必须在你的源代码中使用反斜杠,这样正则expression式引擎才能看到文字反斜杠,并且解释| 字符作为文字而不是交替,例如@"\\|(.*)\\|"

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

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