我遇到了与单个管道字符匹配的小正则表达式的问题。我总是在error_escape代码中得到一个error_escape异常。
在它最基本的形式中,管道上的转义在posix、extended或默认语法模式中不起作用
std::regex("\\|", std::regex_constants::extended);我已经尝试了所有三个模式与两个反斜杠,只有一个和零。
我甚至尝试使用转义来匹配管道字符的实际值:
\\0x7c or \0x7c结果是一样的。
我做错什么了?我代码中的所有其他正则表达式,包括几个类似的文字字符转义(+,*等)。
(请不要建议提速)
发布于 2016-01-28 01:11:08
最早的支持libstdc++的GNU std::regex版本是v4.9.0,所以如果您使用的是libstdc++ v4.8,您将在regex实现中发现很多错误。不幸的是,它是以一个部分且通常无法使用的实现发布的,但现在已经是水落石出了。
(作为记录,这里是v4.8.3文档中的执行情况。尽管这份文件上写着“这个页面描述了主流的GCC SVN中的C++支持,而不是在任何特定的版本中”,但是afaik是当时可用内容的实际记录;然而,唯一的提示是在URL本身。作为新添加的v4.9版的发行说明列表std::regex )。)
我很抱歉地说,我没有使用MinGW,也没有打算使用,所以我没有资格说是否有一个合理的解决办法。显然,std::regex在C++标准库实现(我从未使用过的其他东西)中工作得很好。当然,总有提振作用,但这似乎超出了这个问题的范围:)
https://stackoverflow.com/questions/35049648
复制相似问题