Использование Regex в каналах Yahoo для «очистки» RSS-каналов - PullRequest
0 голосов
/ 04 августа 2010

Нужна помощь в создании Yahoo Pipe, который удаляет определенные элементы из RSS-канала.Для очистки: я бы использовал код регулярного выражения в Yahoo Pipes.Я предполагаю, что синтаксис регулярных выражений универсален?

Я разбил вопрос на несколько подвопросов:

  1. Каким будет регулярное выражение для удаления / удаления определенногоHTML-тег (имеет свой собственный класс)?Содержание

  2. Как я могу удалить ссылки со связанных изображений, но сохранить разметку изображения?

  3. Как добавить последовательные классы ко всем ссылкам, найденным вкормить товар?Если в одном элементе фида есть 5 ссылок, им будут заданы классы: link001, link002, link003, link004, link005 ...

Из-за новых кодов ограничения кода могут быть примерынашел здесь: Использование Regex в каналах Yahoo

Regex не совсем моя сильная сторона ... поэтому любая помощь будет принята с благодарностью!Большое спасибо!

1 Ответ

0 голосов
/ 04 августа 2010

Синтаксис регулярного выражения определенно не универсален. Смотрите мое сравнение вкусов регулярных выражений . К сожалению, в документах Yahoo Pipes не указано, какой вкус регулярных выражений они используют. Примеры выглядят как регулярные выражения в стиле Perl, поэтому я буду использовать их.

Чтобы удалить определенный тег HTML (например, span) с определенным атрибутом класса (например, someclass), выполните поиск:

(?si)<span[^<>]*class=["']?someclass["']?[^<>]*>(.*?)</span>

и заменить на:

$1

Приведенное выше регулярное выражение завершится ошибкой, если тег span, который вы пытаетесь удалить, содержит вложенный тег span.

Чтобы удалить любой тег a, который содержит тег img в качестве первого элемента в своем содержимом, выполните поиск:

(?si)<a[^<>]*>(<img.*?)</a>

и заменить на:

$1

Третий вопрос в вашем вопросе нельзя выполнить только с помощью регулярных выражений. Вам понадобится средство для увеличения числа при замене. Я не знаю, поддерживает ли Yahoo Pipes что-то подобное. Вам не нужно регулярное выражение. Просто найдите текст <a и замените на <a class="link001"

Конечно, применяются все предостережения относительно манипулирования HTML / XML с помощью регулярных выражений. Регулярные выражения работают с приведенными вами примерами, но могут работать не так, как задумано, для каждого возможного фрагмента HTML.

...