Мне нужно изменить элементы, которые окружают какое-то содержимое в строке, оставив контент как есть. Я делаю это с регулярным выражением, но когда я заменяю параметр positional ($ 1), он использует только первое совпадение.регулярное выражение: найти и заменить каждое соответствие
Например, если у меня есть эта строка:
<strong>I want</strong> to change <i>this</i> text,
but <u>I can't</u>. <div class="question">Why?</div>.
Я хочу изменить его на:
<strong>I want</strong> to change <i>this</i> text,
but <u>I can't</u>. <div class="question">Why?</div>.
Но я могу только получить это:
<strong>I want<strong> to change <strong>this<strong> text,
but <strong>I can't<strong>. <strong>Why?<strong>.
Я м с использованием следующего регулярного выражения:
\x26lt;(.*?)\x26gt;
(глобально, и заменить его «<$1>
»)
Я думаю, проблема в том, что я не могу сказать, сколько матчей будут найдены, и как обращаться к каждому из них. Возможно, в Perl я мог бы использовать $ +, но это не работает. Я делаю это с модулем регулярных выражений Yahoo Pipes. Это должно быть очень похоже на PHP-реализацию, afaik.
Как я могу использовать каждый матч отдельно в Yahoo Pipes?
мне нужно сделать два прохода для этого? один для изменения < s и другой для > s? (спасибо!) –
Было бы два прохода. Просто замените строку на < и >, а затем введите новую строку в веб-страницу. – mlevit
Я не знаком с Yahoo Pipes, но большинство машин с регулярными выражениями заменяют все функциональные возможности. Вам придется «replaceAll» («<», «<») 'и' replaceAll («>», «>») ', так что да, потребуются две операции. –