Reputation: 1199
I'm trying to extract numbers inside an URL with regex.
Example Input: http://localhost:23089/generic-url-segment-c?p=5
Expected Output : 5
Example Input: http://localhost:23089/generic-url-segment-c?p=12&sort=5
Expected Output: 12
First I tried to look for the numbers with a mixture of string.replace
,string.indexof
and substring
but thought Regex would be easier.
So far I tried using ((p=)?=.)
but can't get the 5 only.
And also as shown in second example, this value might be a two digit value or there even might be other parameters after it. So maybe a search between p=
and &
is necessary but I don't know how Regex behaves in absence of parameters.
Upvotes: 0
Views: 7683
Reputation: 355
Try the below pattern. The plus matches 1 or more so you can get 1 or more digits -
p=(\d+)
The brackets are a group so to get the value of the match within the group use
match.Groups[1].Value
Upvotes: 3
Reputation: 91415
You could use lookbehind:
(?<=\bp=)\d+
or
(?<=[?&]p=)\d+
Usage:
Regex.Match(str, @"(?<=[?&]p=)\d+").Value;
Upvotes: 2