我正在将基于 boost 的正则表达式转换为 C++11 正则表达式。我有一个名为url
:
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
使用 boost,如果您有一个,smatch
您可以调用match.str("url")
以按名称获取捕获组。使用std::smatch
,我只看到索引子匹配项。
如何使用 std::smatch 类访问 url 捕获?
我正在将基于 boost 的正则表达式转换为 C++11 正则表达式。我有一个名为url
:
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
使用 boost,如果您有一个,smatch
您可以调用match.str("url")
以按名称获取捕获组。使用std::smatch
,我只看到索引子匹配项。
如何使用 std::smatch 类访问 url 捕获?
您不能使用 c++11 标准命名捕获组。C++11 正则表达式符合 ECMAScript 语法。这是一个解释这一切的链接http://www.cplusplus.com/reference/regex/ECMAScript/。尽管如果您考虑一下这可能会令人失望,但真正的正则表达式将不支持这一点,但它是额外的。