我將我的基於升壓正則表達式C++ 11正則表達式。我有一個捕獲組名爲url
:C++ 11正則表達式捕獲組通過名稱
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
有了提升,如果你有一個smatch
你可以調用match.str("url")
通過名字來獲取捕獲組。隨着std::smatch
,我只看到索引子匹配。
我如何才能訪問到使用的std :: SMATCH類的URL捕捉?
我將我的基於升壓正則表達式C++ 11正則表達式。我有一個捕獲組名爲url
:C++ 11正則表達式捕獲組通過名稱
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
有了提升,如果你有一個smatch
你可以調用match.str("url")
通過名字來獲取捕獲組。隨着std::smatch
,我只看到索引子匹配。
我如何才能訪問到使用的std :: SMATCH類的URL捕捉?
不能命名與C++ 11標準中的捕獲組。 C++ 11正則表達式符合ECMAScript語法。這是一個鏈接,解釋了這一切http://www.cplusplus.com/reference/regex/ECMAScript/。即使這可能令人失望,如果你考慮一個真正的正則表達式不會支持這個,它是額外的。
您可以發佈一個例子提取嵌套組?也許比賽可以在管道的任何一邊? –
你的意思是已經做了匹配 – aaronman
我基本上想看看如何根據我發佈的示例有效地提取我的url,更新爲不依賴於命名捕獲組。 –
您是否試過'(?P。*?)'而不是'(?。*?)'? –
HamZa
@HamZa我不知道,如果C++ 11的正則表達式支持命名捕獲組。我剛剛閱讀了Stroustrup新的「The C++ Programming Language」中關於該主題的整章,它甚至沒有提及它。許多在線參考資料似乎並未表明其他情況。 –
它似乎不支持命名組根據這[答](http://stackoverflow.com/a/6398650)。 – HamZa