我一直在尝试在另外两个字符串之间获取字符串。例如,完整的字符串是;
"main.aspx?etc=2&id=c3331316-1b17-e811-a953-0022480042b3&Key=930349624&Window=true"
我正在尝试在" id ="之间获取字符串。和"&";
"c3331316-1b17-e811-a953-0022480042b3"
我登陆的正则表达式是;
id=(.*?)&
我的正则表达式尝试包括" id ="和"&"。所以他们就这样出来了;
"id=c3331316-1b17-e811-a953-0022480042b3&"
任何指针都会非常感激,因为我已经阅读过这应该有效。正则表达式是由我提供并运行第三方软件,所以我想知道我是错还是软件。我想象我是: - )
答案 0 :(得分:0)
*贪婪地带着&直到找到字符串中的最后一个。 试试这个。
id=([^&]+)
正如@revo指出的那样,这将匹配并返回整个id = ...参数。 ()将值部分捕获到单独的匹配值中。这通常表示为某种类型的数组或散列,具体取决于您的编程语言。
(?<=id=)[^&]+
Revo的修改将匹配并返回id的值,而不必使用捕获反向引用。
两者都有额外的好处,就是不必拥有一个&amp;在参数的末尾。意味着这两个网址都将匹配。
&#34; main.aspx等等= 2及?的 ID = c3331316-1b17-E811-a953-0022480042b3 强>&安培;关键= 930349624&安培;窗口=真&#34;
&#34; main.aspx等等= 2及答案= 930349624&安培;窗口=真安培;的 ID = c3331316-1b17-E811-a953-0022480042b3 强>&#34;
答案 1 :(得分:0)
您正在使用匹配的群组。不要试图获得整个结果,而只是尝试分组结果。
尽管如此,您可以使用前瞻和后瞻性分组,如下所示:
(?<=id=)(.*?)(?=&)
编辑,如果id
参数是网址中的最后一个参数,则正则表达式不会触发。如果您不确定它在URL中的位置,则可以使用此正则表达式:
(?<=(?:\?|&)id=)(.*?)(?=&|$)
答案 2 :(得分:0)
[?&]id=(.*?)(?:&|$)
请参阅demo
此处所有其他答案未能做到的是不匹配表单中的内容:
main.aspx?otherid=hek83749dbidne3
此正则表达式将确保id
直接显示在?
之后或&符号之后。
答案 3 :(得分:-1)
试试这个:
(?<=id=)(.*?)(?=&)
这将匹配&#34; id =&#34;之间的所有思考;和&#34;&amp;&#34;