次のような文字列があります。
url.com/my?a=hello&b=world&z=foo
a
とb
パラメータを削除する必要がありますが、削除する必要はありませんz
。だから私はほとんどが動作する次の正規表現を使用しています:
s#((?<=\?)|(&))(a|b)=\w*(?(2)((?=&)|$)|(&|$))##g
基本的に、 or の前に(後読み) a
orb
が追加されていることを確認し、文字列で終わるか、文字列の終わりである必要があります。最初に一致した場合、最後に一致する可能性がありますが、消費しません。?
&
&
&
&
私が抱えている問題は、それらが連続している場合は一致しますa
が、一致しないためb
、次のようになります。
url.com/my?b=world&z=foo
位置を一致させa
た後、前の一致を過ぎているため、後b=...
読み文字を再度表示せずに検索を開始?
すると思います。消費されていない文字を含めて再度検索するにはどうすればよいですか、または置換を分離してすべての文字列を個別に検索する必要があります?