我对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。
发布于 2010-02-27 09:50:20
由于反斜杠()是C (& C++)字符串常量中的转义字符,因此需要对其进行转义。
即,将\的所有实例替换为\
LOL。我在这篇文章中也遇到了同样的问题!所有的反斜杠都消失了,因为我忘了转义它们。
查看此page以查看Boost中可用的不同正则表达式类型。它有一个仅映射到normal的JavaScript类型,这意味着默认值与JavaScript正则表达式兼容。
https://stackoverflow.com/questions/2345933
复制相似问题