2014-06-19 4 views
1

괄호, 대괄호 및 그 안에 동일한 텍스트가있는 하위 문자열을 가질 수 있습니다. 이러한 텍스트를 정규식을 통해 일치 시키려면 어떻게해야합니까? 대소 문자를 구분하지 않습니까?NSRegularExpression - 괄호, 대괄호 등이 포함될 수있는 텍스트를 일치시키는 방법

NSError* error = nil; 
NSString* text = @"Hello (extreme elevation) - some longer string"; 
NSString* obj = @"hello (extreme elevation)"; 
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:obj 
                     options:NSRegularExpressionCaseInsensitive 
                     error:&error]; 
NSArray* matches = [regex matchesInString:text 
            options:0 
            range:NSMakeRange(0, text.length)]; 

이 아무것도 일치하지 않고, obj가 헬로 대문자 경우에도, 그것은 정규 표현식을 통해 일치하지 않습니다,하지만있는 NSString rangeOfString를 통해 일치합니다. 내가 괄호가있을 수 있습니다 경우처럼,이 경우 텍스트에 OBJ, 다른 경우와 일치 할 수 있도록하려면 : 정규 표현식, 괄호, 대괄호, 별표, 더하기 기호의 맥락에서

NSString* text = @"Hello [extreme elevation]"; 
NSString* obj = @"hello [extreme elevation]"; 
+0

가능한 복제본 [NSRegularExpression 이스케이프 괄호] (http://stackoverflow.com/questions/8960528/nsregularexpression-escaping-parentheses) – Sebastian

답변

3

하고, 다른 유사한 문자는 메타 문자입니다. 그들과 일치하기 위해 당신은

    백 슬래시로 이스케이프
  • 하는 중 필요하거나
  • 대괄호 한 쌍을 묶습니다. 백 슬래시는 다음과 같이, 당신은 문자열 리터럴 표현식을 넣을 경우, 당신은 백 슬래시를 두 번해야하는, 그래서뿐만 아니라 오브젝티브 C 컴파일러에 의해 해석된다

리콜 :

NSString* obj = @"hello \\(extreme elevation\\)"; 

대괄호 접근 도 여기서 일 것이다 :

NSString* obj = @"hello [(]extreme elevation[)]"; 

(이 백 슬래시로 이스케이프 할 필요가 대괄호를 제외한 모든 메타 문자와 함께 작동) :

NSString* obj = @"hello \\[extreme elevation\\]"; 
관련 문제