2013-06-02 73 views
6

我將我的基於升壓正則表達式C++ 11正則表達式。我有一個捕獲組名爲urlC++ 11正則表達式捕獲組通過名稱

\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)')) 

有了提升,如果你有一個smatch你可以調用match.str("url")通過名字來獲取捕獲組。隨着std::smatch,我只看到索引子匹配。

我如何才能訪問到使用的std :: SMATCH類的URL捕捉?

+0

您是否試過'(?P 。*?)'而不是'(?。*?)'? – HamZa

+0

@HamZa我不知道,如果C++ 11的正則表達式支持命名捕獲組。我剛剛閱讀了Stroustrup新的「The C++ Programming Language」中關於該主題的整章,它甚至沒有提及它。許多在線參考資料似乎並未表明其他情況。 –

+0

它似乎不支持命名組根據這[答](http://stackoverflow.com/a/6398650)。 – HamZa

回答

5

不能命名與C++ 11標準中的捕獲組。 C++ 11正則表達式符合ECMAScript語法。這是一個鏈接,解釋了這一切http://www.cplusplus.com/reference/regex/ECMAScript/。即使這可能令人失望,如果你考慮一個真正的正則表達式不會支持這個,它是額外的。

+0

您可以發佈一個例子提取嵌套組?也許比賽可以在管道的任何一邊? –

+0

你的意思是已經做了匹配 – aaronman

+0

我基本上想看看如何根據我發佈的示例有效地提取我的url,更新爲不依賴於命名捕獲組。 –