NSRegularExpression匹配一个或多个字母数字

时间:2012-11-11 17:34:41

标签: iphone objective-c ios ipad nsregularexpression

我有以下网址:

https://api.instagram.com/v1/tags/picoftheday/media/recent?access_token=29088696%2Efd3325f%2E7e277194e17340788abc72583dfd48b3

以及以下正则表达式:

 NSRegularExpression * regexTags = [NSRegularExpression regularExpressionWithPattern:@"tags/\\[a-zA-Z0-9]+/media/recent" options:NSRegularExpressionCaseInsensitive error:&error];
   NSArray* tagMatch = [regexTags matchesInString:self.currentRequestURL_
                                                 options:0 range:NSMakeRange(0, [self.currentRequestURL_ length])];

为什么这不匹配正则表达式?

2 个答案:

答案 0 :(得分:1)

摆脱表达式的双反斜杠。你有:

@"tags/\\[a-zA-Z0-9]+/media/recent"

不应该是:

@"tags/[a-zA-Z0-9]+/media/recent" 

双反斜杠转换为单个反斜杠,这意味着它会从正方形支架中跳出。这意味着表达式在字符串中查找实际的开放方括号,而不是打开字符组。

答案 1 :(得分:1)

您在REGEX本身中有错误

正则表达式 @"tags/\\[a-zA-Z0-9]+/media/recent"匹配标记/ \ picoftheday / media / recent

但您需要 tags/[a-zA-Z0-9]+/media/recent 才能匹配标签/ picoftheday / media / recent

有一个有用的在线测试人员测试你的正则表达式是否匹配字符串http://regexpal.com/