【发布时间】:2011-07-06 08:30:31
【问题描述】:
我的 iphone 应用程序使用正则表达式(使用 NSRegularExpression)对大量字符串(1000 多个)执行计算。这当然需要很多时间。有哪些加速正则表达式的策略?我研究过使用块,但我认为它不会有任何好处——它们似乎主要代表 lambda 功能(即,相当于 lisp)并在具有多个内核的 Mac 上使用。显然,现在的 iPhone 没有多核。
这是我的代码:
NSString *replaceRegexPattern = @"([\\(|\\[].*?[\\)|\\]])|(^to )";
NSRegularExpression *replaceRegex = [[NSRegularExpression regularExpressionWithPattern:replaceRegexPattern
options:NSRegularExpressionCaseInsensitive
error:nil] retain];
NSArray *myArray = <some data>;
NSString *myString, *compareValue;
for (i = 0; i < [myArray count]; i++) {
myString = [myArray objectAtIndex:i];
compareValue = [replaceRegex stringByReplacingMatchesInString:myString
options:0
range:NSMakeRange(0, [myString length])
withTemplate:@""];
// do things with compareValue
}
为了回答下面的问题,我在这段代码中的目标是删除我的字符串中的任何文本,这些文本要么用括号括起来,要么以“to”开头。下面是一些例子:
- 你好(再见)-->你好
- 你好(再见 [n])-->你好
- 说-->说
- 说 (pf) --> 说
【问题讨论】:
-
你的表达方式无所谓地删除了“to”、“TO”、“tO”和“To”。如果您只关心一种情况,您可以通过删除选项
NSRegularExpressionCaseInsensitive来加快速度。
标签: iphone regex ios optimization