Your pattern is pretty close to what you would likely want with the addition of:
"popupName">(.*)|<[^>]*>
Adding "popupName" followed by a capture group will allow you to grab the specific info you want.
In Objective-C:
NSString* searchText = @"<div><div class=\"popupName\"> Bob Smith</div><div class=\"popupTitle\"><i></i></div><br /><div class=\"popupTitle\"></div><div class=\"popupLink\"><a href=\"mailto:\"></a></div></div><div>";
NSString *pattern = @"\"popupName\">(.*)|<[^>]*>";
NSRange searchRange = NSMakeRange(0, [searchText length]);
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSString *results = [regex stringByReplacingMatchesInString:searchText options:0 range:searchRange withTemplate:@"$1"];
NSLog(@"results: %@",results);
Result:
results: Bob Smith