首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSRegularExpression不工作

NSRegularExpression不工作
EN

Stack Overflow用户
提问于 2012-04-12 14:19:17
回答 2查看 350关注 0票数 2

我试图从facebook url中解析出照片id,例如,

https://www.facebook.com/photo.php?fbid=267217740038587&set=a.207272412699787.48907.100002510899673&type=1

我的正则表达式是@"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]+)" (注意,我将\?更改为.)

它工作得很完美。

虽然这是可以接受的,但我想知道为什么\?不能在这里工作。有专家吗?:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-12 15:11:03

我不确定,但也许在解析NSString时,反斜杠\正在转义它本身中相关的后面的字符。例如,

代码语言:javascript
复制
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]+)"

票数 4
EN

Stack Overflow用户

发布于 2012-04-12 14:32:39

您可以尝试这样做:

代码语言:javascript
复制
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]];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10118369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档