我怎么能在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];
- Swift正则expression式和反斜杠
- iOS的PhoneGap正则expression式replace
- 在NSRegularExpression中命名捕获组 – 获取一个范围的组名
- 在Swift中使用正则expression式进行简单search时,如何避免由于searchstring中的特殊字符造成的错误?
- Swiftreplace子string正则expression式
- 如何在Swift for iOS中使用NSDateFormatter格式化date?
- 正则expression式在ios中提取href url并丢弃锚标签的其余部分?
- iOS正则expression式阿拉伯语
- iPhone的iOS是否有一个代数计算器的应用程序的expression式分析器?