我将我的基于升压正则表达式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