2012-01-09 6 views
-1

과 :목표 - C stringByReplacingOccurrencesOfString 내가 정규식 표현으로 HTML 코드를 포함하는 내 문자열을 분할하기 위해 노력하고있어 정규식 표현

NSString* regex = @"<.*?>"; 
NSString* html = @"<span class="test">Test1</span><span class="test">Test2</span><span class="test">Test3</span><span class="test">Test4</span>"; 

html = [html stringByReplacingOccurrencesOfString:regex withString:@""]; 

내가 스팬 태그를 삭제할.

아이디어가 있으십니까?

+1

어 - 오, HTML의 정규식 구문 분석 다시 ... [여기] (HTTP를 참조하십시오 : // stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – dreamlax

+1

위 코드를 사용하면 어떻게됩니까? 출력은 무엇입니까? 원하는 출력은 무엇입니까? – PengOne

+0

@PengOne :'stringByReplacingOccurencesOfString : withString :'메소드는 문자열의 리터럴 인스턴스를 바꿉니다. 즉,''<.*?> '을 만나면''@ ""로 바꿀 것입니다. 그러나 ""<.*?> "doesn" 'html' 문자열에 나타나지 않으면'html'은 그대로 유지됩니다. – dreamlax

답변

5

당신은 아마 this method과 같은 것을 할 수 있습니다 : 당신은 위의 링크에서 문서에해야 할 수도 있습니다 어떤 옵션

NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"<.*?>" 
                    options:0 
                     error:NULL]; 

NSString *result = [re stringByReplacingMatchesInString:html 
               options:0 
                range:NSMakeRange(0, [html length]) 
              withTemplate:@""]; 

확인.

1

입력 내용이 HTML 인 경우 HTML PARSER을 사용하십시오.

HTML을 정규 표현식으로 "구문 분석"하는 것은 무의미한 연습입니다. iO/OSX에서 HTML 파싱을 설명하는 많은 질문이 있습니다.

1

이 그냥 충분 가정 사이 < 및> 문자와 모든 것을 제거합니다

(NSString *) stripTags:(NSString *)str 
{ 
    NSMutableString *ms = [NSMutableString stringWithCapacity:[str length]]; 

    NSScanner *scanner = [NSScanner scannerWithString:str]; 
    [scanner setCharactersToBeSkipped:nil]; 
    NSString *s = nil; 
    while (![scanner isAtEnd]) 
    { 
     [scanner scanUpToString:@"<" intoString:&s]; 
     if (s != nil) 
      [ms appendString:s]; 
     [scanner scanUpToString:@">" intoString:NULL]; 
     if (![scanner isAtEnd]) 
      [scanner setScanLocation:[scanner scanLocation]+1]; 
     s = nil; 
    } 

    return ms; 
}