2013-05-26 3 views
3

У меня есть HTML-строка, и я хочу, чтобы найти ссылки на изображения, как <a href="link1"><img src="link2"/></a>найти IMG тег внутри тега с регулярным выражением

Я стараюсь это регулярное выражение, но это не работает: "\<a\s.*\<img.*\<\/a\>"

Когда я использую эту схему его находит строку как <a href="link1">some text1</a>some text2.<a href="link1"><img src="link2"/></a>, но я не хочу сначала <a href часть. Мне просто нужны теги img внутри тега, и мне нужна помощь.

+0

Почему бы вам не использовать парсер HTML? – fge

+0

Я бы сказал, используя HTML-парсер (например, [JSoup] (http://jsoup.org/)) [вместо регулярного выражения] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except -xhtml-самодостаточный-теги). Но для этого простого случая возможно просто использовать группы. – Pshemo

ответ

0

Если вы хотите только часть своего общего регулярного выражения, вам нужно использовать группы или обратные ссылки ().

"\<a\s.*\(<img.*\/>)<\/a\>" 

Тогда в зависимости от языка вам необходимо получить первую группу.

http://www.regular-expressions.info/brackets.html

Update: Чтобы точно соответствовать попробовать:

\<a[^<]*\<img.*\<\/a\> 

вместо того, \s я использовал [^<], который любой символ, кроме <.

+0

Это не сработает для меня, потому что я хочу не просто что-то внутри тегов img. Я хочу теги img внутри тега вместе. Я покрою эту строку с помощью html-кода с некоторым css и опубликую его на свой сервис. Мне нужна именно строка, которая является '' –

+0

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

Смежные вопросы