我怎么能在Objective-C中正确地转义这个正则expression式?

我有以下的正则expression式我想在Objective-C中转义

/\B\$((?:[0-9]+(?=[az])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/ig; 

不完全确定如何逃避它,所以它在Objective-C中的作品

更新:

 NSString* pattern = @"/\\B\\$((?:[0-9]+(?=[az])|(?![0-9\\.\\:\\_\\-]))(?:[a-z0-9]|[\\_\\.\\-\\:](?![\\.\\_\\.\\-\\:]))*[a-z0-9]+)/ig;"; NSRegularExpression *usernameRegex = [[[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil]; error:nil]; 

给我一个关于Parse Issue - Unexpected Identifier的错误

反斜杠用作Cstring中的转义字符。 要将包含反斜杠的正则expression式作为正则expression式转义,需要将它们加倍。

继续从毫米的正确的解决scheme,这里是一个NSString类别的方法,我用来逃避客观C中的正则expression式模式的黑色斜杠。

 + (NSString *)escapeBackslashes:(NSString *)regexString { NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\\\" options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators | NSRegularExpressionAnchorsMatchLines | NSRegularExpressionAllowCommentsAndWhitespace error:&error]; if (error == NULL) { return [regex stringByReplacingMatchesInString:regexString options:0 range:NSMakeRange(0, [regexString length]) withTemplate:@"\\\\"]; } else { return regexString; } } 

用法示例:

 NSString* pattern = [NSString escapeBackslashes:pattern];