Objective-C RegexKitLite соответствует той или иной строке - PullRequest
2 голосов
/ 29 сентября 2011

Я пытаюсь использовать regexkitlite для сопоставления строк в target-c, и у меня возникли некоторые проблемы с этим.То, что я пытаюсь сделать, это искать большую строку для подстрок соответствия:

  • "http://[something].jpg"
  • " http://[something].png"

В основном, я хочу найти все ссылкик изображениям из исходной строки.Сейчас у меня есть:

NSString *regexString = @"http://[a-zA-Z0-9._%+-/]+\.jpg";

Теперь это работает для изображений .jpg, но, конечно, оно не соответствует изображениям .png.Я действительно хотел бы использовать одну regexString, которая бы соответствовала либо одному, но я не могу понять, как.

Читая некоторые учебники по регулярным выражениям для других языков, я думаю, что это что-то вроде:

NSString *regexString = @"http://[a-zA-Z0-9._%+-/]+\.(?:jpg|png)";

Но я не совсем понимаю это правильно.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 31 декабря 2013

Вам не нужна группа без захвата вокруг расширений файлов.Хорошей практикой является их использование, но это может привести к ошибке здесь.(Поддерживает ли библиотека это?)

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

NSString *regexString = @"http://[\w.%+-/]+\.(jpg|png)";

Вы можете увидеть это в действии здесь .

Вы также можете добавить любые расширения файлов, которые вы хотите.Пример: (jpg|png|gif|...).

Обновлено: Apple теперь включает поддержку регулярных выражений с NSRegularExpression , которая доступна в OS X v10.7 и более поздних версиях.

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