17

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

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

HTML我确定包含上述正则表达式的单个匹配项的字符串在哪里。

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

任何帮助深表感谢!

4

2 回答 2

56

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

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

于 2012-07-11T22:10:21.653 回答
0

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

const unichar specialCharSequence='some special character';
if(specialCharSequence==L'\uxxxx')
{
   //handle the occurence of this special character
}
于 2013-08-04T21:58:07.987 回答