如何使用NSRegularExpression提取“badgeCount”标记之间的值“6”。以下是服务器的响应:NSRegularExpression在两个XML标记之间提取文本
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><badgeCount>6</badgeCount><rank>2</rank><screenName>myName</screenName>
以下是我尝试过的代码,但未取得成功。实际上,它在去其他部分并打印“正则表达式的值是无”:
NSString *responseString = [[NSString alloc] initWithBytes:[responseDataForCrntUser bytes] length:responseDataForCrntUser.length encoding:NSUTF8StringEncoding];
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=badgeCount>)(?:[^])*?(?=</badgeCount)" options:0 error:&error];
if (regex != nil) {
NSTextCheckingResult *firstMatch = [regex firstMatchInString:responseString options:0 range:NSMakeRange(0, [responseString length])];
NSLog(@"NOT NIL");
if (firstMatch) {
NSRange accessTokenRange = [firstMatch rangeAtIndex:1];
NSString *value = [urlString substringWithRange:accessTokenRange];
NSLog(@"Value: %@", value);
}
}
else
NSLog(@"Value of regex is nil");
如果你能提供将不胜感激示例代码。
注意:我不想使用NSXMLParser。
为什么你不想要你选择一个XML解析器来解析XML? – Mat
到目前为止您尝试过什么? – Mat
不需要NSXMLParser来提取几个值...我使用http://使用正则表达式“(?<=badgeCount>)(?:[^])??(?= badgeCount)” gskinner.com/RegExr/在线工具,但无法在NSRegular Expression中使用相同的表达式... – Prazi