【发布时间】:2010-02-27 01:48:22
【问题描述】:
我对 c++ 和 boost 非常陌生。 我正在尝试获取给定 url 的主机名:
这就是我现在拥有的:
int main()
{
string url = "http://www.amazon.com/gp/product/blabla";
//Regular Expression from Javascript.
boost::regex ex("/^((\w+):\/\/\/?)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#;\|]+)?([;\|])?([^\?#]+)?\??([^#]+)?#?(\w*)/");
boost::regex_search(url, ex);
// I want it to get "http://www.amazon.com/".
}
我收到大量错误:“无法识别的字符转义序列” 我从 Javascript 中获取了这个正则表达式。我不确定我能做到这一点。
除了 Perl,我可以在“Boost.regex”中使用哪些正则表达式类型? 有没有任何类型的正则表达式转换器? (因为我正在将大量代码从 Javascript 转换为 c++,而且我还有一些正则表达式)。
顺便说一句,这是我在 Javascript 中的功能:
parseHostname: function(url)
{
m = /^((\w+):\/\/\/?)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#;\|]+)?([;\|])?([^\?#]+)?\??([^#]+)?#?(\w*)/.exec(url) || [];
return m[6];
},
查看这个带有 PCRE 的示例和完整代码 - link。
【问题讨论】:
标签: javascript c++ regex boost