(pattern)匹配并获取结果,(?:pattern)匹配但不获取结果,eg:
NSString *test5 = @"http://www.runoob.com:80/html/html-tutorial.html";
NSString *reg7 = @"(?:\\w+):\\/\\/([^/:]+)(?::\\d*)?([^# ]*)";
NSString *reg8 = @"(\\w+):\\/\\/([^/:]+)(:\\d*)?([^# ]*)";
NSArray *matchs6 = [test5 arrayOfCaptureComponentsMatchedByRegex:reg7];
NSArray *matchs7 = [test5 arrayOfCaptureComponentsMatchedByRegex:reg8];
for (id match in matchs6) {
NSLog(@"matchs6===%@",match);
}
for (id match in matchs7) {
NSLog(@"matchs7===%@",match);
}

可以看到使用了?:的匹配结果被忽略
(?=pattern)
NSString *test6 = @"Windows2000";
NSString *test7 = @"Windows31";
NSString *reg9 = @"Windows(?=95|98|NT|2000)";
NSArray *matchs8 = [test6 arrayOfCaptureComponentsMatchedByRegex:reg9];
NSArray *matchs9 = [test7 arrayOfCaptureComponentsMatchedByRegex:reg9];
NSLog(@"matchs8===%@",matchs8);
NSLog(@"matchs9===%@",matchs9);
输出结果:

正向肯定预查的目的就是匹配出符合预查的结果,但是不获取(?=)后面的结果
网友评论