我收到一个奇怪的警告,因此我的正则表达式搜索无效。这是行:
NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];
HTML
是一个我确定包含上述正则表达式的匹配项的字符串。
警告仅在第一次出现“\ |”时出现,而不是在两者上出现。
非常感谢任何帮助!
答案 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
}