Синтаксис регулярного выражения определенно не универсален. Смотрите мое сравнение вкусов регулярных выражений . К сожалению, в документах 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.