2016-04-29 3 views
4

Я пытаюсь удалить часть строки, которая находится в круглых скобках.Как удалить текст в круглых скобках с помощью NSRegularExpression?

В качестве примера, для строки "(This should be removed) and only this part should remain", после использования NSRegularExpression это должно стать "and only this part should remain".

У меня есть этот код, но ничего не происходит. Я проверил код регулярного выражения с RegExr.com, и он работает правильно. Буду признателен за любую помощь.

NSString *phraseLabelWithBrackets = @"(test text) 1 2 3 text test"; 
NSError *error = NULL; 
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"/\\(([^\\)]+)\\)/g" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSString *phraseLabelWithoutBrackets = [regexp stringByReplacingMatchesInString:phraseLabelWithBrackets options:0 range:NSMakeRange(0, [phraseLabelWithBrackets length]) withTemplate:@""]; 
NSLog(phraseLabelWithoutBrackets); 
+1

Проверьте это. http://stackoverflow.com/questions/3741279/how-do-you-remove-parentheses-words-within-a-string-using-nsregularexpression?rq=1 –

ответ

5

Удалите регулярное выражение разделителей и убедитесь, что вы также исключить ( в классе символов:

NSString *phraseLabelWithBrackets = @"(test text) 1 2 3 text test"; 
NSError *error = NULL; 
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"\\([^()]+\\)" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSString *phraseLabelWithoutBrackets = [regexp stringByReplacingMatchesInString:phraseLabelWithBrackets options:0 range:NSMakeRange(0, [phraseLabelWithBrackets length]) withTemplate:@""]; 
NSLog(phraseLabelWithoutBrackets); 

IDEONE demo Смотрите этот и a regex demo.

\([^()]+\) картина будет соответствовать

  • \( - открытая скобка
  • [^()]+ - 1 или больше символов, кроме ( и ) (изменение + к * также соответствовать и удаления пустых скобок ())
  • \) - закрывающая скобка
+1

Прекрасно работает, спасибо! – Bastek