Regex 一组字符之间的文本的正则表达式

Regex 一组字符之间的文本的正则表达式,regex,Regex,我一直在试图在另外两个字符串之间找到一个字符串。例如,完整字符串为 "main.aspx?etc=2&id=c3331316-1b17-e811-a953-0022480042b3&Key=930349624&Window=true" 我试图得到“id=”和“&”之间的字符串 我登陆的正则表达式是 id=(.*?)& 我的正则表达式尝试包括“id=”和“&”。所以他们是这样出来的 "id=c3331316-1b17-e811-a953-0022480042b3

我一直在试图在另外两个字符串之间找到一个字符串。例如,完整字符串为

"main.aspx?etc=2&id=c3331316-1b17-e811-a953-0022480042b3&Key=930349624&Window=true"
我试图得到“id=”和“&”之间的字符串

我登陆的正则表达式是

id=(.*?)&
我的正则表达式尝试包括“id=”和“&”。所以他们是这样出来的

"id=c3331316-1b17-e811-a953-0022480042b3&"
从我所读到的内容来看,任何提示都将非常有用。regex是由我提供的,并通过第三方软件运行,所以我想知道我是错的还是软件是错的。我想我是:-)

试试这个:

(?<=id=)(.*?)(?=&)

(?该*贪婪地获取&直到找到字符串中的最后一个。
试试这个

id=([^&]+)

正如@revo指出的,这将匹配并返回整个id=…参数。()将值部分捕获到单独的matches值中。这通常表示为数组或某种类型的散列,具体取决于您的编程语言

(?<=id=)[^&]+

(?您正在使用匹配的组。不要尝试获取整个结果,而只获取分组结果

但是,您可以使用前向和后向分组,如下所示:

(?<=id=)(.*?)(?=&)

这里的所有其他答案都没有做到的是匹配以下表格中的内容:

main.aspx?otherid=hek83749dbidne3

此正则表达式将确保
id
直接出现在
后面或在一个符号后面。

你的目标语言/工具是什么?使用lookarounds,如果语言支持它们,你的正则表达式工作,你想要的字符串进入你的第一组看看这里:所有答案(我给出的答案除外)接受任何一个参数的最后一个字母是“代码> ID ”,即<代码> HID= Trime将匹配和<代码> Atdiid=HekWe984将匹配。最好考虑最后一次编辑。这样做不会。我看到你的观点@ ReVo。OP在他的帖子中使用了圆括号,所以我假设他对这个概念很满意。将在第一次匹配中捕获值部分时起作用。他使用了捕获组,并说整个过程也将捕获不需要的分隔符。您的解决方案在结果中只省略了
&
,但
id=
仍然存在。这也将匹配
main.aspx?etc=2&Key=930349624&Window=true&otherid=C333316-1b17-e811-a953-0022480042b3
,这意味着它不是简单地获取实际的
id
参数。您不需要转义
i
&
。是的-我可以确认这返回了一个空格,同时删除了斜杠。也可以随意删除捕获组。这也将匹配
main.aspx?etc=2&Key=930349624&Window=true&otherid=c3331316-1b17-e811-a953-0022480042b3
,这意味着它不是简单地获取实际的
id
参数,使用此解决方案时要小心。如果id=…位于url的末尾,将不会有另一个&锚定它,结果将不会返回。好的,您可以用
和$
替换
。感谢您指出这一点t out。我编辑了我的答案。这也将匹配
main.aspx?etc=2&Key=930349624&Window=true&otherid=C333316-1b17-e811-a953-0022480042b3
,这意味着它不是简单地获取实际的
id
参数
(?<=(?:\?|&)id=)(.*?)(?=&|$)
[?&]id=(.*?)(?:&|$)
main.aspx?otherid=hek83749dbidne3