为什么这段代码只吐出整个正则表达式匹配而不是捕获组?
输入
@"A long string containing Name:</td><td>A name here</td> amongst other things"
预期输出
A name here
实际输出
Name:</td><td>A name here</td>
代码
NSString *htmlString = @"A long string containing Name:</td><td>A name here</td> amongst other things";
NSRegularExpression *nameExpression = [NSRegularExpression regularExpressionWithPattern:@"Name:</td>.*\">(.*)</td>" options:NSRegularExpressionSearch error:nil];
NSArray *matches = [nameExpression matchesInString:htmlString
options:0
range:NSMakeRange(0, [htmlString length])];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSString *matchString = [htmlString substringWithRange:matchRange];
NSLog(@"%@", matchString);
}
取自 Apple 文档的代码。 我知道还有其他库可以做到这一点,但我想坚持这项任务的内置内容。
最佳答案
您将使用以下方法访问第一个组范围:
for (NSTextCheckingResult *match in matches) {
//NSRange matchRange = [match range];
NSRange matchRange = [match rangeAtIndex:1];
NSString *matchString = [htmlString substringWithRange:matchRange];
NSLog(@"%@", matchString);
}
关于objective-c - 捕获组在 NSRegularExpression 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822356/