-2

Objective-Cで正規表現を扱うときの正しい構文は何ですか?

次の文字列があるとします。

NSString *string = @"my string";

および次の正規表現:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(a|b)*"];

文字列をこの正規表現と照合する必要がある場合は、次で十分でしょうか?

if(NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(a|b)*"]) {
  // do something
}

matches文字列が正規表現に一致する場合にメソッドがすでに返されるJavaに慣れていますtrue^^

4

2 に答える 2

5

そのifステートメントで行っているのは、正規表現が作成されたことを確認することだけです。あなたがマッチしたことはありません。

numberOfMatchesInString:options:error:メソッド(または他の一致するメソッドのいずれか)がありません。それらはすべてドキュメントにあります。

探しているコードは次のようになります。

NSString *string = @"my string";

NSError *error = NULL;
NSRegularExpression *regex = 
    [NSRegularExpression regularExpressionWithPattern:@"(a|b)*" 
                                              options:0 
                                                error:&error];
// Check error here... (maybe the regex pattern was malformed)

NSUInteger numberOfMatches = [regex numberOfMatchesInString:string 
                                                    options:0 
                                                     range:NSMakeRange(0, [string length])]; // Check full string

if (numberOfMatches > 0) {
    // You have at least one match ...
}
于 2013-03-13T09:38:59.910 に答える
1

正規表現の使用方法の簡単な例

NSString *expression = @"^[a-zA-Z_//s]{0,30}$";
    NSString *newString = @"abc";
    NSError *error = nil;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];

    NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
                                                        options:0
                                                          range:NSMakeRange(0, [newString length])];

     if (numberOfMatches == 0)
     {
         NSLog(@"Not Allowed");
     }
     else
     {
         NSLog(@"Allowed");
     }
于 2013-03-13T09:40:39.540 に答える