NSRegularExpression
을 사용하여 텍스트에서 문자열의 발생을 찾습니다. 이런 식으로 뭔가 :NSRegularExpression은 어떻게 NSRange를 벗어납니다.
NSInteger numberOfRanges = [match numberOfRanges];
// then I enumerate the ranges
for (int i=0; i<[match numberOfRanges]; i++) {
NSRange range = [match rangeAtIndex:i];
// The problem here is that some ranges come out of bounds
}
: 결과가 여러 범위를 가질 수 있기 때문에, 나는이 라인을 가지고
[regex enumerateMatchesInString:textContent options:0 range:NSMakeRange(0, [textContent length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
}];
블록 내부
하고 그런 다음
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"<a href=\"(.*)\">(.*)</a>[:blank:]|[:blank:](.*)\\n\\n\\n"
options:NSRegularExpressionCaseInsensitive
error:&error];
, 나는이 사용 결과를 열거
범위를 열거하는 동안 일부는 범위를 벗어납니다. 이 범위가 코드 자체에서 발견되면 어떻게 될 수 있습니까 ???
요약에서 어떤 일이 벌어지고 있는지 말하기는 매우 어렵습니다. 샘플 데이터로 문제를 보여주고 Github과 같은 어딘가에 게시 할 수있는 최소한의 예제 프로젝트를 만들 수 있습니까? –
충돌 할 때 일치하지 않습니까? 이 경우 Objective-C에서 numberOfRanges는 nil로 끝나고 for 루프는 한 번 실행되고 충돌합니다. 이 경우를 테스트하기 위해 블록 상단에'if (match == nil) {return}'이 필요합니다. –
@DuncanC - ok, 그러나 numberOfRanges가 0보다 큰 경우 NSRange를 nil과 동일하게 설명 할 수 있습니까? 설명해 주신 덕분에 – SpaceDog