2015-10-19 84 views
2

我接收URL作爲(我使用C++,不是C++ 11,不能既使用boost)鍵僅提取從URL

fbconnect://success?request=1658882854368553&to%5B0%5D=10207704056262807 

其中密鑰可以不是request(如error_code)。 我需要只提取鍵,如何用正則表達式來做到這一點? 目前,我首先分爲?&,而不是=,但我不知道是否有更短的方法來實現這一點?

+1

正則表達式在C++ 11之前不可用。 –

+0

@πάνταῥεῖ也許她正在使用不同的正則表達式庫... –

+0

如果你想要一個正則表達式,那麼我認爲'&(。+?)='會工作,但它只會匹配第一個結果,你需要將它應用於剩下的部分,所以你將不得不做一些像&&(。+?)=。+?(&。*)'這樣的事情,把第一組作爲結果並且在第二組上重新應用相同的表達式,不要更快,你的方法是好的 –

回答

1

以下正則表達式將捕獲所有的查詢字符串字段名稱:

[\?&]([^=]+)= 

,這大概比

在我第一次分裂因一時短?而不是由&和由=

但是考慮哪個更可讀。通常可讀性比代碼的長度更重要。另外,如果你不需要其他任何東西,那麼包含一個正則表達式引擎可能會過度。