Ios 是否有方法编译NSRegularExpression以匹配多个字符串?

Ios 是否有方法编译NSRegularExpression以匹配多个字符串?,ios,Ios,ICU和Java的正则表达式支持(可能还有其他平台)将正则表达式的编译与匹配到特定字符串分开。当公共正则表达式模式与多个字符串匹配时,这会提高性能,因为它只需要编译一次 有没有办法使用NSRegularExpression执行此操作?如果我正确阅读文档的话,它的设计似乎结合了这两个步骤。它们是两个步骤。首先,创建一个正则表达式: NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<

ICU和Java的正则表达式支持(可能还有其他平台)将正则表达式的编译与匹配到特定字符串分开。当公共正则表达式模式与多个字符串匹配时,这会提高性能,因为它只需要编译一次


有没有办法使用NSRegularExpression执行此操作?如果我正确阅读文档的话,它的设计似乎结合了这两个步骤。

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

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

我是否误解了这个问题?

我没有意识到编译是在初始化正则表达式时发生的,因为这是ICU中的一个单独步骤。谢谢你的澄清!我并不是说在什么时候进行了多少“编译”(我们不知道实现细节),但创建
NSRegularExpression
与对不同字符串重复使用正则表达式对象是有区别的。
[regex enumerateMatchesInString:htmlString
                        options:0
                          range:NSMakeRange(0, [htmlString length])
                     usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
                         // do whatever you want
                 }];