2012-07-23 4 views
1

정규 표현식을 배우려고하는데이 표현식을 NSRegularExpression으로 올바르게 설정하는 방법을 이해할 수 없습니다. 문자열에있는 괄호의 내용을 가져와야합니다.괄호 내용에 대한 정규 표현식

그래서 : 벨몬트 (오 헤어 지점)

저를 줄 것이다 (숲 Pk의이 바인딩) :

정말 감사하겠습니다 '숲 Pk의가 결합 된' '오 헤어 지점'와에게 주석이 달린 예제.

감사합니다.

+1

그것은 또한 당신을주지해야한다 O '들 토끼 지점? –

+0

당신이 맞습니다. 내 질문이 업데이트되었습니다. – ChickensDontClap

답변

3

\(.*?\) 괄호 안에 모든 것을 제공합니다. 미안하지만 NSRegularExpression에서 어떻게하는지 전혀 모른다. 당신은 IOS 개발자가 따라 오거나 직접 우리를 위해 그것을 기다려야합니다.

\(#escaped opening bracket 
    . #match anything 
    * #match . 0 - unlimited times 
    ? #make the * not greedy 
\) #escaped closing bracket 
2
@"\\(.*?\\)" 

는 일을 할 것입니다.

주의 사항 : 그건 이 같은 지원 중첩 된 괄호가되지 않습니다

Hi duck (debug duck (now just a regular duck)) 

따라서는, 전체 솔루션이 될 것입니다 :

NSString *string = @"Hi duck (debug duck), let's go to shower!"; 
NSRange range = NSMakeRange(0, [string length]); 
NSString *pattern = @"\\(.*?\\)"; 
NSError *error = nil; 

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:range]; 

NSLog(@"%@", [string substringWithRange:[match rangeAtIndex:0]]);