我正在尝试在xcode中做一个基本的正则表达式而且它没有合作。
NSString *urlString = @"http://www.youtube.com/v/3uyaO745g0s?fs=1&hl=en_US";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/.*?v=(.*)&.*/" options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *fmis = [regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];
if(fmis) {
NSRange match = [fmis range];
NSLog(@"%i", match.location);
}
基本上,我只是试图从urlString中取出3uyaO745g0s
。我假设正则表达式是最好的方法吗?谢谢你回答我的问题。
**编辑**
有时网址看起来像这样:http://www.youtube.com/watch?v=3uya0746g0s
我也必须从中捕获视频。
答案 0 :(得分:3)
我认为创建一个NSURL
对象并让它为你带来魔力要容易得多:
NSString *urlString = @"http://www.youtube.com/v/3uyaO745g0s?fs=1&hl=en_US";
NSURL *url = [NSURL URLWithString:urlString];
// Since you're targeting the last component of the url
NSString *myMatch = [url lastPathComponent]; //=> 3uyaO745g0s
您可以详细了解如何访问NSURL
对象的各个部分here
答案 1 :(得分:1)
Youtube网址有很多种类型。 也许你可以试试这个
NSString *urlString = @"http://www.youtube.com/v/3uyaO745g0s?fs=1&hl=en_US";
NSString *regEx = @"[a-zA-Z0-9\\-\\_]{11}";
NSRange idRange = [urlString rangeOfString:regEx options:NSRegularExpressionSearch];
NSString *youtubeID = [urlString substringWithRange:idRange];
我找到了这个正则表达式here。而且您不必使用NSRegularExpression
进行简单搜索:)
我认为这是一个非常好的解决方案,但如果您想要更可靠的结果,那么请在该答案中尝试另一个正则表达式。