Skip to content

Instantly share code, notes, and snippets.

@zdk
Created January 8, 2013 06:38
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save zdk/4481771 to your computer and use it in GitHub Desktop.
Save zdk/4481771 to your computer and use it in GitHub Desktop.
A stupid Regex to extract Youtube id from the given list of youtube URLs in Objective-C
//
// extract_youtube_id.m
// TestRegex
//
// Created by zdk on 1/8/2013 BE.
// Copyright (c) 2013 zdk. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//test list
NSArray *youtubeURLs = [NSArray arrayWithObjects:
@"http://youtu.be/NLqAF9hrVbY",
@"http://www.youtube.com/watch?feature=player_embedded&v=DJjDrajmbIQ",
@"http://www.youtube.com/watch?v=dQw4w9WgXcQ",
@"http://www.youtube.com/embed/NLqAF9hrVbY",
@"https://www.youtube.com/embed/NLqAF9hrVbY",
@"http://www.youtube.com/watch?v=NLqAF9hrVbY",
@"http://www.youtube.com/v/dQw4w9WgXcQ",
@"http://youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US",
@"http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US",
@"http://youtube.com/watch?v=NLqAF9hrVbY",
@"http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo",
@"http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I",
@"http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4",
@"http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY",
@"http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec",
nil];
//construct regex pettern
NSString *pattern = @"(?:(?:\.be\/|embed\/|v\/|\\?v=|\&v=|\/videos\/)|(?:[\\w+]+#\\w\/\\w(?:\/[\\w]+)?\/\\w\/))([\\w-_]+)";
for (NSString *url in youtubeURLs) {
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: pattern
options: NSRegularExpressionCaseInsensitive
error: &error];
NSTextCheckingResult *match = [regex firstMatchInString: url
options: 0
range: NSMakeRange(0, [url length])];
if ( match ) {
NSRange videoIDRange = [match rangeAtIndex:1];
NSString *substringForFirstMatch = [url substringWithRange:videoIDRange];
NSLog(@"url: %@, Youtube ID: %@", url, substringForFirstMatch);
} else {
NSLog(@"No string matched! %@", url);
}
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment