【问题标题】:Boost::Xpressive::sregex uri pattern matchBoost::Xpressive::sregex uri 模式匹配
【发布时间】:2013-01-12 15:56:59
【问题描述】:

我一直在搜索和测试正则表达式以匹配所有 uris,但我似乎无法找到匹配所有或大多数 uris 的。我尝试过的很多都引发了编译错误。有人有 Xpressive::sRegex 兼容的正则表达式吗?

【问题讨论】:

  • 它会引发编译错误,因为您可能包含分隔符,或者没有正确转义字符串。
  • 我有这个正则表达式,它看起来正确吗? "^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=: ]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0- 9A-F]{2})*)(?::(\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/ ]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|% [0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{ 2})*)?)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F ]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A- F]{2})*))?”
  • 好吧,我找到了这篇文章 - stackoverflow.com/questions/1252992/…
  • 我也有这个 - 这是正确的吗? "(ftp|http|https):\/\/(\w+\.)*(\w*)\/([\w\d]+\/{0,1})+"
  • 我想提一下,上面的正则表达式不匹配任何东西,我也在使用 regex_search 函数来匹配字符串中的子字符串

标签: c++ regex boost xpressive


【解决方案1】:

你可以从以下几点开始:

using namespace boost::xpressive;

static const sregex re = _b >> (s1 = +(~(set= ':', '/', '?', '#')))
                            >> as_xpr("://")
                            >> (s2 = *(~(set= '/', '?', '#')))
                            >> (s3 = *(~(set= '?', '#')))
                            >> !(as_xpr('?') >> (s4 = *(~(set='#'))))
                            >> !(as_xpr('#') >> (s5 = *_)) >> _b; 

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多