1

テキストパッドのみを使用すると、どの正規表現が検出されますか。または & は href 内にあり、それらを一時的に置き換えます (正しい URL エンコーディングではそれらがエンティティとして残されることはわかっていますが)..片付け後に後で使用できるキーで置き換えます。私が今持っているものは最初のインスタンスを見つけますが、複数の & を含む 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">

そうすれば、後ですばやく検索して置換し、後で元の状態に戻すことができます。これは、保存するためではなく、検証するためだけのものだからです。

ありがとう!

4

1 に答える 1

0

これがテキストパッドでどのように達成されるかはわかりませんが、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. ルックアラウンド (?<= .... ) は、最初にアンカータグであることを検証します
  2. href名が見つかるまでそのタグを移動します
  3. & を探して、"、<、>、スペース文字以外の文字列を移動します
  4. すべての & 文字列が検索され、置換されます。
于 2013-04-28T16:39:35.760 に答える