【发布时间】:2021-05-13 04:44:58
【问题描述】:
如何使用 NSRegularExpression 提取“badgeCount”标签之间的值“6”。以下是来自服务器的响应:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><badgeCount>6</badgeCount><rank>2</rank><screenName>myName</screenName>
以下是我尝试但未成功的代码。实际上它进入 else 部分并打印“正则表达式的值为零”:
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?
-
到目前为止你尝试过什么?
-
不需要 NSXMLParser 来提取几个值...我确实得到了所需的正则表达式 "(?)(?:[^])*?(?=gskinner.com/RegExr 在线工具但无法在 NSRegular Expression 中使用相同的表达式...
-
编辑您的问题以包含您尝试过的代码,并准确解释它的问题所在。
标签: objective-c regex swift swift3 nsregularexpression