Regex 使用正则表达式从查询字符串中提取值

Regex 使用正则表达式从查询字符串中提取值,regex,Regex,我试图使用正则表达式从这个字符串中提取值,但我似乎无法正确获取它 字符串: ?Ntt=crockett%20&%20Jones&Rdm=718&searchType=simple&type=search&Ns=&N=&Nrpp=12&No=0&Nr=AND(product.active:1,NOT(record.type:Store)) 我需要Ntt的值,它是crockett%20&%20Jones 我目前拥有的正则表达式

我试图使用正则表达式从这个字符串中提取值,但我似乎无法正确获取它

字符串:

?Ntt=crockett%20&%20Jones&Rdm=718&searchType=simple&type=search&Ns=&N=&Nrpp=12&No=0&Nr=AND(product.active:1,NOT(record.type:Store))
我需要
Ntt
的值,它是
crockett%20&%20Jones

我目前拥有的正则表达式是:

\?Ntt=(([&%])|([^&=]))*
但这导致:

?Ntt=crockett%20&%20Jones&Rdm

如何更新我的正则表达式以生成所需的值?

您可以使用基于捕获组的正则表达式,如

[&?]Ntt=(((?:%20&%20 |[^&])*)

或者,您可以使用基于lookback的正则表达式,如

(?
[&\?]Ntt=([^&]*)

首先捕获分隔符(或者?或者&),然后捕获密钥,然后捕获所有内容,直到下一个分隔符


演示:

通常在查询字符串中分隔输入。&是否确实需要
和%20Jones
?如果不需要,请使用
[&\?]Ntt=([^&]*)
@mankowitz,我确实需要
和%20Jones
-这就是为什么我在努力寻找合适的regexHow你知道第二组是你想要捕获的东西的一部分吗?换句话说,你怎么知道你需要多少?