全世界都知道正則的 (XXX) 是捕獲, (?:XXX) 是匹配但不捕獲,但OC中是幾個(gè)意思? 真是不吐不爽!
int main(int argc, const char * argv[]) {
const char *text =
"abcdefg12345\n"
"abcdefg12345\n"
"ABCDEFG12345\n"
"abcdefg12345\n"
"abcdefg12345\n";
NSString *string = @(text);
NSError* error = nil;
NSRegularExpression *reg = [NSRegularExpression regularExpressionWithPattern:@"(?:\\D+)(\\d+)(?:\\D)" options:0 error:&error];
NSArray* match = [reg matchesInString:string options:0 range:NSMakeRange(0, string.length)];
for (NSTextCheckingResult *result in match)
{
NSString *str = [string substringWithRange:result.range];
NSLog(@"result: %@", str);
}
return 0;
}
輸出結(jié)果:
result: abcdefg12345
result: abcdefg12345
result: abcdefg12345
result: abcdefg12345
result: abcdefg12345
PS:
//問題延伸
NSString *path = @"/Users/sma11case/aaaa/cccc";
NSString *exp = @"(?:/)([^/]+)(?:/[^/]+)$"; // 本來不管是否貪婪都可以安全匹配到aaaa,現(xiàn)在變成要看臉色了