向后方向的NSRegularExpression?

时间:2013-07-12 11:56:03

标签: iphone ios objective-c regex nsregularexpression

我对NSBackwardSearch了解向后搜索字符串的知识。

我的问题,我可以通过NSRegularExpression执行相同的向后搜索。

如果是,请分享您的知识?

2 个答案:

答案 0 :(得分:1)

没有使用NSRegularExpression进行向后搜索的概念,您需要使用捕获组并查找最后一次出现。在class reference中没有提到它。

如果您有理由相信匹配将位于非常大的字符串的后半部分,您可以先搜索该大字符串的子字符串,但我个人不会尝试以这种方式预先优化我的代码。 / p>

答案 1 :(得分:1)

您可以反转在正则表达式的结果数组中使用的枚举器:

NSString *regExPattern = @"<strong>.*?</strong>";
NSError *error = nil;
static NSRegularExpression *regex = nil;
regex = [NSRegularExpression regularExpressionWithPattern:regExPattern
                                                      options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators
                                                        error:&error];

NSArray *matches = [regex matchesInString:HTMLString options:0 range:NSMakeRange(0, HTMLString.length)];

for (NSTextCheckingResult *result in [matches reverseObjectEnumerator] /*HERE'S THE MAGIC*/)
{
    //Do something here
}