我试图从facebook url中解析出照片id,例如,
我的正则表达式是@"https?:\/\/(www\.)?facebook\.com\/photo\.php\?fbid=([0-9]+)"
我用一个外部工具RegExhibit - http://homepage.mac.com/roger_jolly/software/对此进行了测试,它似乎工作得很好。
但是,它在XCode中不起作用。我试着调试,问题似乎出在photo\.php之后的\?。当我将其更改为
@"https?:\/\/(www\.)?facebook\.com\/photo\.php.fbid=([0-9]+)" (注意,我将\?更改为.)
它工作得很完美。
虽然这是可以接受的,但我想知道为什么\?不能在这里工作。有专家吗?:-)
发布于 2012-04-12 15:11:03
我不确定,但也许在解析NSString时,反斜杠\正在转义它本身中相关的后面的字符。例如,
NSLog(@"https?:\/\/(www\.)?facebook\.com\/photo\.php\?fbid=([0-9]+)");实际打印https?://(www.)?facebook.com/photo.php?fbid=([0-9]+),如果将其视为自己的正则表达式,它将按照您所描述的方式执行(如果您将?替换为.,则可以半正确地执行)
所以,我猜要让它正常工作,你需要使用@"https?:\\/\\/(www\\.)?facebook\\.com\\/photo\\.php\\?fbid=([0-9]+)"。
发布于 2012-04-12 14:32:39
您可以尝试这样做:
NSString *query = @"parameter=2&secondparameter=3"; // replace this with [url query];
NSArray *components = [query componentsSeparatedByString:@"&"];
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
for (NSString *component in components) {
[parameters setObject:[[component componentsSeparatedByString:@"="] objectAtIndex:0] forKey:[[component componentsSeparatedByString:@"="] objectAtIndex:1]];
}https://stackoverflow.com/questions/10118369
复制相似问题