#regex #pipe #yahoo
#регулярное выражение #труба #yahoo
Вопрос:
есть ли у вас какие-либо идеи, как изменить элемент. описание в Yahoo.pipes по этой ссылке
<img src="http://mysite.com/img/pc/image.gif" class="big" style="background-image:url(http://mysite.com/pre_big_crop/pic/pc/gallery/dd/c1/example.jpeg);" alt="" title="">
к этому
<img src="http://mysite.com/pre_big_crop/pic/pc/gallery/dd/c1/example.jpeg"/>
использование регулярных выражений.
Ответ №1:
Я не знаю, какой вариант каналов регулярных выражений используется, поэтому я пойду с .ЧИСТЫЙ вариант, и вы можете настроить любой необходимый синтаксис. Это должно быть довольно близко.
Поиск:
<img[^>] url(
([^)] )
)[^>] >
Заменить на:
<img src="$1" />
Соедините строки. Строка 1 находит тег изображения до аргумента url в атрибуте стиля CSS. Строка 2 соответствует URL-адресу фонового изображения и захватывает его. Строка 3 соответствует остальной части тега изображения.
Ответ №2:
Вот чрезвычайно простое регулярное выражение для достижения того, что вы ищете, используя регулярные выражения в стиле PERL:
<img.*background-image:url((.*));.*>
В принципе, вот разбивка того, как оно соответствует:
- Оно начнется с сопоставления символов «
- Затем он сопоставляет любые символы от 0 до неограниченного количества раз.
- Затем оно соответствует строке «background-image:url (
- Затем оно соответствует любым символам от 0 до неограниченного количества раз, которые записываются в обратную ссылку # 1
- Тогда оно соответствует символам «);»
- Затем оно соответствует любым символам от 0 до неограниченного количества раз.
- Тогда оно соответствует символу «>».
Примечание: вы должны заменить элементы, которые соответствуют любым символам, на что-то более конкретное, в зависимости от приложения, в котором вы используете регулярное выражение. Вот почему я назвал это «чрезвычайно простым».
Затем это заменяется на:
<img src="$1">
Редактировать: не видел ответа Ричарда Таллента, довольно похожее приложение, просто другая реализация.
Комментарии:
1. Да, они похожи, но в вашем шаблоне есть некоторые незначительные проблемы: если во входных данных содержится более одного тега IMG в одной строке, будет захвачено только фоновое изображение последнего тега. Кроме того, если строка также содержит другую
)
после последнего фонового URL-адреса, запись будет содержать не только URL-адрес. Оба они связаны с.*
тем, что они слишком жадные (по крайней мере, в .NET, прошло много времени с тех пор, как я делал какие-либо регулярные выражения в Perl).