【问题标题】:Is there a match_partial in C++11 Regular Expressions?C++11 正则表达式中有 match_partial 吗?
【发布时间】:2011-12-03 11:57:32
【问题描述】:

我阅读了n1429 的部分

regex_match 和 regex_search 算法都支持正则表达式库中不常见的功能:部分匹配。当在传递给算法的标志中设置标志 std::regex_constants::match_partial 时,如果匹配一个或多个字符,则可能返回 true 的结果,然后状态机到达字符的末尾序列,而仍然有要匹配的状态。 [...]

但我在 FCD 和当前 gcc-4.7.0 的标头中都找不到该功能的任何痕迹。我还寻找了 n1429 的修订版,但再次没有找到任何东西。我知道该提案的基础起源于 Boost 并进入了 TR1。但是不知道match_partial什么时候消失了。

部分匹配功能还在 C++11 中吗?也许用不同的名字?

【问题讨论】:

    标签: c++ regex boost c++11 tr1


    【解决方案1】:

    似乎match_partial 标志已在N1723 "Proposed Resolutions to Library TR Issues"(2004 年 10 月)中删除,以解决N1507 "Errata to the Regular Expression Proposal"

    7.34 match_partial 标志的含义

    移除 match_partial。

    根据N1837 "Library Extension Technical Report  Issues List" 的理由是:

    LWG 同意这是一个有用且可实施的功能,但我们已多次尝试 并没有给它一个足够的规范。我们希望可以添加此功能 在未来的版本中。

    我猜 C++11 中没有替代品。你仍然可以使用 Boost.Regex(std::regex 的来源),它支持partial match

    【讨论】:

    • 谢谢。我搜索的是整个 N1429 的替代品,而不是大胆的修改。
    • 我一直在绞尽脑汁想弄清楚为什么我无法匹配任何东西!我认为这将是任何实现中的默认行为。谢谢你。
    猜你喜欢
    • 2016-09-17
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多