NumberOfMatchesInString NSRegularExpression всегда возвращает единицу - PullRequest
0 голосов
/ 02 августа 2010

У меня есть следующий код:

NSString *text = @"http://bit.ly/111 http://bit.ly/222 http://www.www.www";
NSRegularExpression *aLinkRegex = [NSRegularExpression regularExpressionWithPattern:@".*http://.*" options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger numberOfMatches = [aLinkRegex numberOfMatchesInString:text options:0 range:NSMakeRange(0, [text length])];

Я хочу найти количество http в тексте (я знаю, что это не очень хорошее регулярное выражение), но numberOfMatchesInString всегда возвращает 1, хотя должноверните 3 в приведенном выше коде.

Может кто-нибудь сказать, что не так с приведенным выше кодом?

Приветствия,

1 Ответ

1 голос
/ 02 августа 2010

Существует только одно совпадение, потому что ваше регулярное выражение соответствует первому http://, а .* "съедает" остальную часть строки.

Почему бы не поискать что-то более похожее на:

http://

или если вы пытаетесь захватить каждый URL-адрес полностью, что-то вроде:

http://[^ ]*

Что означает поиск чего-либо после http: //, которое не является пробелом.

Вы действительно должны прочитать какое-нибудь руководство по регулярным выражениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...