Objective-C中的正则表达式

use*_*428 -2 regex objective-c

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

假设我有以下字符串:

NSString *string = @"my string";
Run Code Online (Sandbox Code Playgroud)

以及以下正则表达式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(a|b)*"];
Run Code Online (Sandbox Code Playgroud)

如果我必须匹配这个正则表达式的字符串,将遵循足够的?

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

如果字符串与regexp ^^匹配,我习惯于Java matches已经返回的Javatrue

Dav*_*ist 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 ...
}
Run Code Online (Sandbox Code Playgroud)