textpad regexp заменяет все амперсанды в строке URL для href - PullRequest
1 голос
/ 09 марта 2012

Используя только текстовую панель, regexp найдет & amp; или & внутри href и временно замените их (хотя я знаю, что при правильном кодировании URL они будут оставлены как сущности) ... с ключом, который можно будет использовать позже после TIDYING up. То, что я сейчас нашел, находит первый экземпляр, но параметры URL с несколькими символами & не очищаются правильно и не учитывают элементы, которые правильно закодированы с помощью & amp; уже.

Вот что у меня есть:

FIND WHAT: \(<a href="[^"]+?\)&

REPLACE WITH: \1-AMP-

То, что я хочу, это то, что примет это:

<A HREF="http://domain/boo.php?dross1=foo&dross2=bar&amp;dross3=baz&dross4=alpha&dross5=beta&amp;dross6=delta">

и превратить это в:

<A HREF="http://domain/boo.php?dross1=foo-AMP-dross2=bar-AMPENT-dross3=baz-AMP-dross4=alpha-AMP-dross5=beta-AMPENT-dross6=delta">

Таким образом, я могу быстро найти и заменить, чтобы потом вернуть их к первоначальному состоянию, поскольку это только для проверки, а не для сохранения.

Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2013

Я не уверен, как это будет достигнуто в textpad, однако в powershell это можно сделать так:

$String ='<A HREF="http://domain/boo.php?dross1=foo&dross2=bar&amp;dross3=baz&dross4=alpha&dross5=beta&amp;dross6=delta">'
$String -replace '(?<=<a[^<>]*href="[^"<> ]*?)&amp;',  "-AMP-"

выходы

<A HREF="http://domain/boo.php?dross1=foo&dross2=bar-AMP-dross3=baz&dross4=alpha&dross5=beta-AMP-dross6=delta">

Рассекая регулярное выражение:

  1. Осмотр (? <= ....) сначала подтверждает, что вы якорный тег </li>
  2. перемещается по этому тегу, пока не найдет имя href
  3. перемещается через строку символов ", <,>, пробел ищет &
  4. После этого все & строки будут найдены и заменены.
...