3
ICU和Java的正则表达式支持(可能还有其他平台)将正则表达式的编译从匹配到特定字符串中分离出来。当一个常见的正则表达式模式与多个字符串匹配时,这会提高性能,因为它只需要编译一次。有没有办法编译NSRegularExpression来匹配多个字符串?
有没有办法用NSRegularExpression做到这一点?如果我正确地阅读文档,它的设计似乎将这两个步骤结合起来。
ICU和Java的正则表达式支持(可能还有其他平台)将正则表达式的编译从匹配到特定字符串中分离出来。当一个常见的正则表达式模式与多个字符串匹配时,这会提高性能,因为它只需要编译一次。有没有办法编译NSRegularExpression来匹配多个字符串?
有没有办法用NSRegularExpression做到这一点?如果我正确地阅读文档,它的设计似乎将这两个步骤结合起来。
他们是两个步骤。首先,创建一个正则表达式:
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
}];
我误解了问题?
我还没有意识到编译发生在正则表达式初始化时,因为它是ICU中的一个单独步骤。感谢您的澄清! – tball
我并不是想说在什么时候发生了多少次“编译”(我们不知道实现的细节),但是确实存在一种分离方式,即使用那种方法创建'NSRegularExpression'正则表达式对象为不同的字符串重复 – Rob