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

Mas*_*son 17 regex objective-c ios nsregularexpression

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

NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];
Run Code Online (Sandbox Code Playgroud)

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

警告仅在第一次出现"\ |"时出现,而不是两者都出现.

任何帮助深表感谢!

Ada*_*eld 56

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

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