用于括号内容的正则表达式

时间:2012-07-23 20:25:04

标签: ios regex

我正在尝试学习正则表达式,但我无法理解如何将此正确设置为NSRegularExpression。我需要在字符串中获取任何括号的内容。

所以: 贝尔蒙特(奥黑尔分校)(Forest Pk-bound)

会给我: 'O'Hare Branch'和'Forest Pk-bound'

我非常感谢一个评论的例子。

谢谢!

2 个答案:

答案 0 :(得分:3)

\(.*?\)将为您提供括号内的所有内容。抱歉,我不知道如何在NSRegularExpression中执行此操作。您要么必须等待IOS开发人员出现,要么自己认定。

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

答案 1 :(得分: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]]);