2013-06-02 89 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,更新为不依赖于命名捕获组。 –