我正在将基于boost的正则表达式转换为C++11的regex。我有一个名为url
的捕获组:
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
使用boost库,如果您有一个smatch
对象,可以通过调用match.str("url")
方法按名称获取捕获组。但是使用std::smatch
类时,我只能看到索引子匹配。
如何使用std::smatch类访问url捕获?
我正在将基于boost的正则表达式转换为C++11的regex。我有一个名为url
的捕获组:
\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
使用boost库,如果您有一个smatch
对象,可以通过调用match.str("url")
方法按名称获取捕获组。但是使用std::smatch
类时,我只能看到索引子匹配。
如何使用std::smatch类访问url捕获?
在C++11标准中,您无法为捕获组命名。 C++11 regex符合ECMAScript语法。这里是一个链接,解释了所有内容 http://www.cplusplus.com/reference/regex/ECMAScript/。虽然这可能令人失望,但如果考虑到真正的正则表达式不支持这一点,它就是额外的。
(?P<url>.*?)
而不是(?<url>.*?)
吗? - HamZa