0

だから私はこの正規表現を持っています:

&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)

これは、テキスト ブロック内のすべての & に一致します

ただし、次の文字列がある場合:

& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>
---------------------------------------------------------^

... マークされた & もターゲットにされます - & を & に置き換えるために使用しているため、URL は無効になります:

http://localhost/MyFile.aspx?mything=2&amp;this=4

ああ!URLに含まれていない&をエンコードするより良い方法を知っている人はいますか?

4

2 に答える 2

4

いいえ、URL は無効になりません。HTML コードは次のようになります。

<a href="http://localhost/MyFile.aspx?mything=2&amp;this=4">

これは、正しくエンコードされていなかったコードが正しくエンコードされたことを意味し、リンクに含まれる実際の URL は次のとおりです。

http://localhost/MyFile.aspx?mything=2&this=4

したがって、コード内の & 文字がエンコードされることは問題ではなく、逆にコードは正しくなりました。

于 2009-11-05T11:04:21.300 に答える
0

PowerShell では、次のように実行できます。

$String ='& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>'
$String -replace '(?<!<[^<>]*)&', "&amp;"

収量

&amp; &amp; &amp; &amp; &amp; <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &amp;</a>

正規表現の分析:

  1. ルックアラウンド (?<! .... ) は、最初にタグに含まれていないことを検証します
  2. すべての & 文字列が検索され、置換されます。
于 2013-04-28T17:03:13.750 に答える