使用正则表达式解析变量字符串

时间:2014-08-29 02:09:22

标签: regex

如何在字符串中选择变量?

我的字符串是

?aa=56345634563456&bb=16843621384

我尝试使用这个表达式:

(\?|\&)aa=([^&]*)

给我这个结果:

?aa=56345634563456

我想只选择值而不是aa = ,只选择此值:

56345634563456

如何使用正则表达式选择该值?

PS:我的英语不太好,谢谢你理解

2 个答案:

答案 0 :(得分:1)

您的正则表达式(\?|\&)aa=([^&]*)是正确的。但是你需要打印第二个被捕获的组而不是打印整个匹配。

以下正则表达式只匹配值,您不需要去捕获组。因此,当您使用以下正则表达式时,打印整个匹配不会有问题。

如果要匹配变量aabb的值,请尝试以下正则表达式,

(?<=[?&](?:aa|bb)=)[^&]*

如果您只想匹配aa的值,请尝试下面的

(?<=[?&]aa=)[^&]*

DEMO

在javascript中,

> "?aa=56345634563456&bb=16843621384".match(/[?&]aa=([^&]*)/)[1];
'56345634563456'

> var s = "?aa=56345634563456&bb=16843621384";
undefined
> var re = /[?&]aa=([^&]*)/g;
undefined
> function getMatches(string, regex, index) {
... index || (index = 1);
... var matches = [];
... var match;
... while (match = regex.exec(string)) {
..... matches.push(match[index]);
..... }
... return matches;
... }
undefined
> var matches = getMatches(s, re, 1);
undefined
> matches
[ '56345634563456' ]

答案 1 :(得分:0)

    (?<=aa=)(\d+)

这应该这样做。

参见演示。

http://regex101.com/r/lK9iD2/8