2014-08-29 127 views
2

如何在字符串中選擇一個變量?解析帶正則表達式的變量字符串

我的字符串是

?aa=56345634563456&bb=16843621384 

我試圖用這句話:

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

給我這樣的結果:

?aa=56345634563456 

我要選擇唯一的價值沒有AA =,只有這個值:

56345634563456 

如何使用正則表達式選擇該值?

PS:我的英語不太好,謝謝理解

+0

你想要兩個變量'aa','bb'的值嗎? – 2014-08-29 02:13:43

+0

您需要引用您的第二個匹配組,以僅打印匹配結果。也可以不用第一個捕獲組,使用一個字符類'[?&] aa =([^&] +)',然後引用第一個組作爲匹配結果。 – hwnd 2014-08-29 02:48:41

回答

1

你的正則表達式(\?|\&)aa=([^&]*)是正確的。但是您需要打印第二個捕獲的組,而不是打印整個比賽。

下面的正則表達式只會匹配這些值,您不需要去捕獲組。因此,當您使用下面的正則表達式時,打印整個匹配不會成爲問題。

,如果你想匹配這兩個變量aabb值試試下面的正則表達式,

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

如果你想匹配的aa值而已,然後嘗試以下,

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

DEMO

在javascript中,

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

OR

> 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' ] 
+0

(?<= [?&] aa =)[^&] *這是我想要的,它不適用於JavaScript。 PHP和Python只有 – traBolics 2014-08-29 03:42:41

+0

你想要一個JS解決方案? – 2014-08-29 03:45:00

+0

是的,我想要一個js解決方案http://regex101.com/r/sB7nQ7/2#javascript – traBolics 2014-08-29 03:55:02

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

這應該這樣做。

查看演示。

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

+0

謝謝你的回答。但56345634563456號碼始終不是數字。它可能是a5s5da6或-asdas-23_asda-a – traBolics 2014-08-29 03:06:21

+0

我與你的答案合併@hwnd的答案(?<= aa =)([^&] +) – traBolics 2014-08-29 03:11:26

+0

http://regex101.com/r/lK9iD2/ 1#javascript錯誤與js – traBolics 2014-08-29 03:24:37

相關問題