【问题标题】:Boost Regex Find host/domain nameBoost Regex 查找主机/域名
【发布时间】: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


    【解决方案1】:

    由于反斜杠 (\) 是 C (& C++) 字符串常量中的转义字符,因此需要对其进行转义。

    即用 \\ 替换所有 \ 实例

    哈哈。我对这个帖子有同样的问题!所有的反斜杠都消失了,因为我忘记转义了。

    查看page 以查看 Boost 中可用的不同正则表达式类型。它有一个 JavaScript 类型,它只映射到正常,这意味着默认值与 JavaScript 正则表达式兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2021-11-14
      • 2020-03-08
      相关资源
      最近更新 更多