2013-07-12 5 views
1

У меня есть знания о NSBackwardSearch для поиска строки в обратном направлении.NSRegularExpression в обратном направлении?

Мой вопрос, могу ли я сделать то же самое обратное направление поиска через NSRegularExpression.

Если да, просьба поделиться своими знаниями?

+0

Вы хотите, чтобы найти последний матч или прочитать строку в обратном направлении при поиске? –

+0

Моя цель - найти последний матч. Но если это длинная строка, она не является оптимальной для нахождения всех вхождений, а затем получает результат по вступлению [origin.length-1]. – Kirubachari

ответ

1

Не существует понятия обратного поиска с помощью NSRegularExpression, вам нужно будет использовать группы захвата и найти последнее вхождение. Это нигде не упоминается в class reference.

Если у вас были основания полагать, что совпадение было бы в последней части очень большой строки, вы могли бы сначала найти подстроку этой большой строки, но лично я бы не попытался предварительно оптимизировать мой код таким образом.

+0

Спасибо за разъяснения – Kirubachari

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 
} 
Смежные вопросы