2017-08-11 52 views
0

我有一些的URL重寫,我需要的是將在URLNginx的重寫捕獲逗號分隔字符串

/598ccb3055027300394ad711,598cf4f955027300386f3232?other=param 

捕捉

598ccb3055027300394ad711,598cf4f955027300386f3232 

怎麼樣把這個?我試過([a-zA-Z0-9,] +),但它只捕獲第一個字母數字字符串。

+0

Y我們的正則表達式確實匹配'** GRP 0 - (POS 1,LEN 49) 598ccb3055027300394ad711,598cf4f955027300386f3232 ** GRP 1 - (POS 1,LEN 49) 598ccb3055027300394ad711,598cf4f955027300386f3232'你需要它對於整個字符串匹配,以及? – sln

+0

當我在nginx中嘗試這個正則表達式時,它只捕獲逗號前的第一個字母數字字符串 – MikeL

+0

奇怪的是,''[a-zA-Z0-9,] +'中沒有任何內容會使它停在逗號,除非逗號','在一個類中有特殊含義,或者它根本不是逗號,但另一個Unicode看起來很相似。或者,網址中的逗號實際上不是逗號。試試'[a-zA-Z0-9,] +。[a-zA-Z0-9,] +'作爲測試。 – sln

回答

0

我想這給一個鏡頭:

/([^?]+) 

蟒蛇例如:

import re 
text = "/598ccb3055027300394ad711,598cf4f955027300386f3232?other=param" 
match = re.search("/([^?]+)", text) 
if match: 
    print (match.group(1)) 

應該輸出:

598ccb3055027300394ad711,598cf4f955027300386f3232 

你想從捕獲/到第一非?,那就是你會得到的

+0

'(^?)'是一個有效的nginx正則表達式構造嗎? – sln

+0

這似乎不工作 – MikeL

+0

哎呀,對不起。 O型。更新。我忘了[和]字符類 – sniperd

0

試試這個正則表達式:

\/([a-zA-Z0-9]+,[a-zA-Z0-9]+).+ 

,然後捕獲的第一和唯一的組。該組排除了開始的正斜槓,並且在解析組之後到達非字母數字字符之後(並且只有確實捕獲了您感興趣的部分)。

+0

不知道我在做什麼這裏錯了,但它似乎只捕獲第一個 – MikeL