-2

在 Objective-C 中处理正则表达式时正确的语法是什么?

假设我有以下字符串:

NSString *string = @"my string";

和以下正则表达式:

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

如果我必须将字符串与这个正则表达式进行匹配,那么以下就足够了吗?

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

如果字符串与正则表达式匹配,我习惯于 Javamatches方法已经返回^^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 回答