如何使用NSRegularExpression提取字符串的特定部分?

时间:2014-12-05 03:07:44

标签: ios objective-c regex nsstring nsregularexpression

说我有一堆不同的字符串:

"http://website.com/283/comments/einp43/2398/32/34/23/4/4"
"http://website.com/23283/l34/comments/inhd3/3928/3/2/3"
"http://website.com/pics/283/comments/en43/a89st/389238/a823/"
"http://website.com/pics/hd/283/comments/as87/asd7j/3"

我总是希望comments/后面的部分是有价值的ID。但我不想要评论部分,我只想要ID。

如何隔离/提取?

2 个答案:

答案 0 :(得分:4)

假设网站名称存储为名为NSString的{​​{1}}:

websiteName

(编辑:在发布此答案之前,我没有注意到标题中提到NSArray *components = [websiteName componentsSeparatedByString:@"comments/"]; NSString *valuableID = [components lastObject]; ,但在这种情况下我不认为正则表达式是必要的,因为您需要寻找单个常量字符串,不需要复杂的模式识别。)

答案 1 :(得分:2)

您可以使用正则表达式执行此操作,请尝试使用此代码

NSString *string = @"http://website.com/23283/l34/comments/inhd3/3928/3/2/3";

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/comments/([^/]*)" options:NSRegularExpressionCaseInsensitive error:nil];
[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, string.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
    NSString *subStr = [string substringWithRange:[result rangeAtIndex:1]];
    NSLog(@"commentId = %@", subStr);
}];

输出:

commentId = inhd3