正则字符串部分后的数字的正则表达式

时间:2017-08-21 15:19:35

标签: c# regex

我正在尝试使用正则表达式在URL中提取数字。

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

首先,我尝试使用string.replacestring.indexofsubstring混合查找数字,但认为Regex会更容易。

到目前为止,我尝试使用((p=)?=.),但无法获得5。

并且如第二个示例所示,此值可能是两位数值,或者甚至可能是其后的其他参数。因此,可能需要在p=&之间进行搜索,但我不知道正则表达式在缺少参数时的行为。

2 个答案:

答案 0 :(得分:2)

尝试以下模式。加号匹配1或更多,因此您可以得到1位或更多位数 -

 p=(\d+)

括号是一个组,以便在组使用中获取匹配值

match.Groups[1].Value

答案 1 :(得分:1)

你可以使用lookbehind:

(?<=\bp=)\d+

(?<=[?&]p=)\d+

用法:

Regex.Match(str, @"(?<=[?&]p=)\d+").Value;