iOS 正则表达式:未知转义序列"|"



我收到一个奇怪的警告,因此我的正则表达式搜索无法工作。这是一条线:

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

其中HTML是一个字符串,我确信它包含上面正则表达式的一个匹配项。

警告仅在第一次出现"\|"时出现,而不是同时出现。

非常感谢您的帮助!

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

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

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

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

最新更新