新しい状況が発生するまで完全に機能していた次の正規表現があります
^.*[?&]U(?:RL)?=(?<URL>.*)$
基本的に、これは URL に対して使用され、U= または URL= の後のすべてを取得し、URL 一致でそれを返します。
したがって、次の場合
http://localhost?a=b&u=http://otherhost?foo=bar
URL = http://otherhost?foo=bar
残念ながら、奇妙なケースが出てきました
http://localhost?a=b&u=http://otherhost?foo=bar&url=http://someotherhost
理想的には、URL を " http://otherhost?foo=bar&url=http://someotherhost " にしたいのですが、代わりに " http://someotherhost "だけにします。
編集:これで修正されたと思います...きれいではありませんが
^.*[?&](?<![?&]U(?:RL)?=.*)U(?:RL)?=(?<URL>.*)$