I have a query string like the following:
https://www.shoes.com/men-shoes/sneakers/?cgid=men-shoes-
sneakers&prefn1=refinementColor&prefv1=White&detail=acme&id=12345
I want to get everything from &prefn1 to the end of the string , so the result will be
&prefn1=refinementColor&prefv1=White&detail=acme&id=12345
How can i do this in Powershell ?
A replace pattern like ^[^&]+
should probably do the trick:
$uri = 'https://www.shoes.com/men-shoes/sneakers/?cgid=men-shoes-sneakers&prefn1=refinementColor&prefv1=White&detail=acme&id=12345'
$uri -replace '^[^&]+'
However if you want something more robust, you can convert your string into an Uri
object and from there you can extract the query from the .Query
property and use ParseQueryString
string to get a Name / Value collection:
Add-Type -AssemblyName System.Web
$uri = [uri] 'https://www.shoes.com/men-shoes/sneakers/?cgid=men-shoes-sneakers&prefn1=refinementColor&prefv1=White&detail=acme&id=12345'
$query = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
$query.AllKeys | ForEach-Object {
[pscustomobject]@{
Key = $_
Value = $query[$_]
}
}