Регулярные выражения. Как вырезать нужный текст?

Есть текст такого вида:
<img id = "3" class="lazy" src="/media/a.jpg" data-original="/media/a.jpg" alt="text">

Нужно вырезать все, кроме /media/a.jpg из data-original.
Не хватает ума. Нужно вытащить из сайта примерно около 2 тыс картинок. Все остальное уже написал.
  • Вопрос задан
  • 1082 просмотра
Решения вопроса 1
sfi0zy
@sfi0zy
Creative frontend developer
Можете посмотреть в сторону sed. Таким вот образом
echo '<img blah data-original="/media/a.jpg" blah>' | sed 's/.*data-original="\([^"]*\)".*/\1/'

Вы можете достать значение data-original из вашей строки
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Это будет быстрее и проще регулярных выражений:

tag = '<img id = "3" class="lazy" src="/media/a.jpg" data-original="/media/a.jpg" alt="text">'
pos1 = a.index('data-original="') + len('data-original="')
pos2 = tag.index('"', pos1)
link = tag[pos1:pos2]
Ответ написан
Комментировать
targumon
@targumon
use Mojo::DOM;

my $text = '<img id = "3" class="lazy" src="/media/a.jpg" data-original="/media/a.jpg" alt="text">';
my $data_original = Mojo::DOM->new( $text )->find( 'img' )->map( attr => 'data-original' );

print "$_\n" foreach @$data_original;
Ответ написан
zergon321
@zergon321
import re

reg = re.compile(r"data_original=\"([A-Za-z./]+\.jpg)\"")
print(reg.findall("<img id = \"3\" class=\"lazy\" src=\"/media/a.jpg\" data-original=\"/media/a.jpg\" alt=\"text\">"))
Ответ написан
Комментировать
@vanyabrovaru
Web Developer
Сама регулярка:
/data-original="([^"]+)/

Пример, чтобы сразу проверить в bash:
echo '<img id = "3" class="lazy" src="/media/a.jpg" data-original="/media/a.jpg" alt="text">' | perl -lne '/data-original="([^"]+)/; print "$1";'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы