次のパターンで作業しようとしています。
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#{{[[[0-9]{1,10}-[0-9]{1,10}-[0-9]{1,10}]]}}" options:0 error:&error];
NSString *originalMesssage = @"test #{{[[8-16-5]]}}";
NSArray *arrResults = [regex matchesInString:originalMesssage options:NSRegularExpressionCaseInsensitive
range:NSMakeRange(0, [originalMesssage length])];
上記の正規表現でフィルタリングした後の戻り値として「8-16-5」が欲しいです。どうやら問題は「{}」と「[]」の文字にあります。http://regexpal.com/で同じパターンをテストしましたが、問題なく動作しています。1) 上記のコードで使用すべきワイルドカード文字はありますか?
参考文献:NSRegularExpression
以下は、最終的に私のために働いたコードです。
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#\\{\\{\\[\\[[0-9]{1,10}-[0-9]{1,10}-[0-9]{1,10}\\]\\]\\}\\}" options:0 error:&error];
NSString *originalMesssage = @"test #{{[[8-16-5]]}}";
NSArray *arrResults = [regex matchesInString:originalMesssage options:NSRegularExpressionCaseInsensitive
range:NSMakeRange(0, [originalMesssage length])];
NSTextCheckingResult *match = [arrResults objectAtIndex:0];
NSRange matchRange = [match range];
NSString *resultString = [originalMesssage substringWithRange:matchRange];