2012-11-29 81 views
3

ICU和Java的正则表达式支持(可能还有其他平台)将正则表达式的编译从匹配到特定字符串中分离出来。当一个常见的正则表达式模式与多个字符串匹配时,这会提高性能,因为它只需要编译一次。有没有办法编译NSRegularExpression来匹配多个字符串?

有没有办法用NSRegularExpression做到这一点?如果我正确地阅读文档,它的设计似乎将这两个步骤结合起来。

回答

2

他们是两个步骤。首先,创建一个正则表达式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<h1>(.*?)</h1>" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:&error]; 

,然后第二个,你用它(显然使用任何你想要的方法):

[regex enumerateMatchesInString:htmlString 
         options:0 
          range:NSMakeRange(0, [htmlString length]) 
        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 
         // do whatever you want 
       }]; 

我误解了问题?

+0

我还没有意识到编译发生在正则表达式初始化时,因为它是ICU中的一个单独步骤。感谢您的澄清! – tball

+0

我并不是想说在什么时候发生了多少次“编译”(我们不知道实现的细节),但是确实存在一种分离方式,即使用那种方法创建'NSRegularExpression'正则表达式对象为不同的字符串重复 – Rob

相关问题