Какое регулярное выражение Yahoo использует в этом случае?

#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((.*));.*>
 

В принципе, вот разбивка того, как оно соответствует:

  1. Оно начнется с сопоставления символов «
  2. Затем он сопоставляет любые символы от 0 до неограниченного количества раз.
  3. Затем оно соответствует строке «background-image:url (
  4. Затем оно соответствует любым символам от 0 до неограниченного количества раз, которые записываются в обратную ссылку # 1
  5. Тогда оно соответствует символам «);»
  6. Затем оно соответствует любым символам от 0 до неограниченного количества раз.
  7. Тогда оно соответствует символу «>».

Примечание: вы должны заменить элементы, которые соответствуют любым символам, на что-то более конкретное, в зависимости от приложения, в котором вы используете регулярное выражение. Вот почему я назвал это «чрезвычайно простым».

Затем это заменяется на:

 <img src="$1">
 

Редактировать: не видел ответа Ричарда Таллента, довольно похожее приложение, просто другая реализация.

Комментарии:

1. Да, они похожи, но в вашем шаблоне есть некоторые незначительные проблемы: если во входных данных содержится более одного тега IMG в одной строке, будет захвачено только фоновое изображение последнего тега. Кроме того, если строка также содержит другую ) после последнего фонового URL-адреса, запись будет содержать не только URL-адрес. Оба они связаны с .* тем, что они слишком жадные (по крайней мере, в .NET, прошло много времени с тех пор, как я делал какие-либо регулярные выражения в Perl).