-1

次のパターンで作業しようとしています。

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];
4

1 に答える 1

3

、、、、および文字は[、正規表現では特別な意味を持ちます。あなたはそれらを脱出する必要があります:]{}

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])];
于 2013-02-23T18:43:05.120 に答える