一部の HTML コンテンツで正規表現置換を実行しようとしていますが、アンカー タグやリンク タグなどのタグ用に既に存在する URL に URL パラメーターを追加する必要があります。たとえば、のようなアンカータグを持っています
<a href="http://www.google.com">test</a>
になるはずです(「?」を付けて)
<a href="http://www.google.com?append=1">test</a>
ただし、既に url パラメータがある場合は、それを追加するだけです。つまり、次のようになります。
<a href="http://www.google.com?s=this&q=test">test</a>
になります (「&」を付けて)
<a href="http://www.google.com?s=this&q=test&append=1">test</a>
また、必ずしもリンクが常に存在するとは限らない場合があることも考慮する必要があります-次のように
<a href="javascript:doThis('test')">test</a>
この場合、私はそれを放っておく必要があります。
次のような JavaScript に埋め込まれたリンクがある場合もあります。
<a href="javascript:doThis('http://www.google.com')">test</a>
<a href="javascript:window.open('newWindow','http://www.google.com')">test</a>
これも次のように置き換えます (「&」または「?」を使用):
<a href="javascript:doThis('http://www.google.com?append=1')">test</a>
<a href="javascript:window.open('newWindow','http://www.google.com?append=1')">test</a>
(これはそれほど重要ではありません - 私はこれなしで生活できます)
また、リンクに必ずしも http:// が含まれているとは限りません。単に相対リンクである可能性があります。
<a href="/home.aspx?s=this&q=test">test</a>
以前のように追加するだけです:
<a href="/home.aspx?s=this&q=test&append=1">test</a>
私は次のことを試しました - 最初のものはすべての JavaScript リンクと他のリンク (実際の URL ではない) を置き換えました。そして、2つ目はまったく機能しません...
content = Regex.Replace(content, "href=\"(.*)\\?(.*)\"", "href=\"$1?append=1&$2\"", RegexOptions.IgnoreCase);
content = Regex.Replace(content, "href=\"([^?]*)\"", "href=\"$1?append=2\"", RegexOptions.IgnoreCase);
編集: HTML Agility pack を既に使用しようとしましたが、取得している HTML が適切に形成されていないため、機能しません。また、私が取得している HTML は 1 つのライナーではなく、これを行う必要があるページ全体です...