我正在尝试使用正则表达式在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.replace
,string.indexof
和substring
混合查找数字,但认为Regex会更容易。
到目前为止,我尝试使用((p=)?=.)
,但无法获得5。
并且如第二个示例所示,此值可能是两位数值,或者甚至可能是其后的其他参数。因此,可能需要在p=
和&
之间进行搜索,但我不知道正则表达式在缺少参数时的行为。
答案 0 :(得分:2)
尝试以下模式。加号匹配1或更多,因此您可以得到1位或更多位数 -
p=(\d+)
括号是一个组,以便在组使用中获取匹配值
match.Groups[1].Value
答案 1 :(得分:1)
你可以使用lookbehind:
(?<=\bp=)\d+
或
(?<=[?&]p=)\d+
用法:
Regex.Match(str, @"(?<=[?&]p=)\d+").Value;