C++11正则表达式中是否有match_partial选项?

7
我阅读了n1429中的这一部分。
正则表达式库中不常见的一个特性是,算法regex_match和regex_search都支持部分匹配。当在传递给算法的标志中设置了标志std::regex_constants::match_partial时,如果匹配了一个或多个字符,并且状态机在仍有状态需要匹配时到达了字符序列的末尾,则可能返回true的结果。[...]
但我在FCD中找不到该功能的任何痕迹,也没有在当前gcc-4.7.0的头文件中找到任何痕迹。我还寻找了n1429的修订版本,但仍然没有找到任何东西。我知道建议的基础起源于Boost并进入了TR1。但我不知道match_partial何时消失。 部分匹配特性是否仍在C++11中?也许有不同的名称吗?
1个回答

8

看起来在N1723 "Proposed Resolutions to Library TR Issues"(2004年10月)中,match_partial标志已被移除,作为对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来源于此),它支持部分匹配

谢谢。我搜索了整个N1429的替代方案,而不是粗体修订版。 - towi
1
我一直在努力思考为什么我无法匹配任何东西!我认为这会是任何实现的默认行为。谢谢你。 - Kenneth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接