RegexKitLite Как преобразовать регулярное выражение PHP в цель c - PullRequest
0 голосов
/ 03 августа 2011

Я использовал это регулярное выражение для поиска img src в строке в одном на моем сайте.Теперь я не хочу использовать это выражение, чтобы сделать то же самое в цели c.Как я могу сделать это с помощью RegexKitLite?Это мое выражение

/<img.+src=[\'"]([^\'"]+)[\'"].*>/i

@ Tim Pietzcker

Ваш код работает отлично, но, например, если я пытаюсь найти img в этой строке

<p><a href="http://www.nationalgeographic.it/popoli-culture/2011/08/03/news/per_la_tomba_del_boia-443612/?rssimage"> <img src="http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg" width="140" align="left" hspace="10"></a>Scoperta in America del Sud la sepoltura pre-incaica di un uomo circondato da coltelli cerimoniali che secondo gli archeologi eseguiva sacrifici umani</p>

У меня есть эторезультат в моем массиве:

matchArray: (
    "<img src=\"http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg\" width=\"140\" align=\"left\" hspace=\"10\">"
)

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

1 Ответ

1 голос
/ 03 августа 2011

Разделители / сбивают вас с толку.Кроме того, вы должны по крайней мере использовать ленивые квантификаторы.Попробуйте это:

NSString *regexString = @"(?i)<img.+?src=['\"]([^'\"]+)['\"].*?>";

Это прерывается, когда имена файлов содержат кавычки, кстати.Может ли это быть проблемой для вас?

Регулярное выражение, которое немного безопаснее (и хорошо обрабатывает кавычки), будет

NSString *regexString = @"(?i)<img[^<>]+?src=(['\"])((?:(?!\\1).)+)\\1[^<>]*>";

Однако теперь имя файла совпадений будет в группе захвата 2, а не 1, поэтому вам нужно изменить любой код, который использует имя файла после совпадения.

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