blah blah blah (/.+?\.jpg) (?<=/).+?(?=\.jpg) NSString *searchString =@"http://johndoe:secret@www.example.com:8080/private/mail/index.html"; NSString *regexString = @"\b(https?)://(?:(\S+?)(?::(\S+?))?@)?([a-zA-Z0-9\-.]+)(?::(\d+))?((?:/[a-zA-Z0-9\-._?,'+\&%$=~*!():@\\]*)+)?"; if([searchString isMatchedByRegex:regexString]) { NSString *protocolString = [searchString stringByMatching:regexString capture:1L]; NSString *userString = [searchString stringByMatching:regexString capture:2L]; NSString *passwordString = [searchString stringByMatching:regexString capture:3L]; NSString *hostString = [searchString stringByMatching:regexString capture:4L]; NSString *portString = [searchString stringByMatching:regexString capture:5L]; NSString *pathString = [searchString stringByMatching:regexString capture:6L]; NSMutableDictionary *urlDictionary = [NSMutableDictionary dictionary]; if(protocolString) { [urlDictionary setObject:protocolString forKey:@"protocol"]; } if(userString) { [urlDictionary setObject:userString forKey:@"user"]; } if(passwordString) { [urlDictionary setObject:passwordString forKey:@"password"]; } if(hostString) { [urlDictionary setObject:hostString forKey:@"host"]; } if(portString) { [urlDictionary setObject:portString forKey:@"port"]; } if(pathString) { [urlDictionary setObject:pathString forKey:@"path"]; } NSLog(@"urlDictionary: %@", urlDictionary); }