Objective-Cで簡単な正規表現を使う

Objective-Cで正規表現を使うのrubyなどに比べてちょっと面倒ですが、単純なものなら簡単に処理できるようです。

文字列「あいう(えお)」からカッコ前と、カッコの中を取り出す
正規表現/(.+)\s*((.+))/だとすると、必要な文字列は

@"(.+)\\s*\\((.+)\\)";

になります。バックスペースは「\」となります。あとはパターンに当てはめてば良いだけでした。


NSString *regexpStr = @"(.+)\\s*\\((.+)\\)";
NSRegularExpression *regexp 
= [NSRegularExpression regularExpressionWithPattern:regexpStr options:0 error:nil];
NSTextCheckingResult *match 
= [regexp firstMatchInString:itemStr options:0 range:NSMakeRange(0, str.length)];
if (match.numberOfRanges) {    // マッチした全体    
    NSString *str0 = [itemStr substringWithRange:[match rangeAtIndex:0]]; // 最初のカッコの中
    NSString *str1 = [itemStr substringWithRange:[match rangeAtIndex:1]]; // 2番目のカッコ の中
    NSString *str2 = [itemStr substringWithRange:[match rangeAtIndex:2]];  
    ...

コメント