这是boost regex的bug吗?
Is this a bug of boost regex?
我想匹配像a-z, a-z, 0-9和-这样的字符,所以我这样写:
#include "thirdparty/boost/regex.hpp"
#include <iostream>
using namespace std;
int main(){
string reg = "[a-z-A-Z0-9]";
boost::regex expression(reg);
cout<<"OK"<<endl;
}
运行时,程序核心转储并说:
抛出'boost::exception_detail::clone_impl>'实例后终止调用解析正则表达式时发生错误:'[a-z->>>HERE>>>A-Z0-9]'.
谁能告诉我为什么?
原因是字符类中第一个范围之后的连字符(-
)。在字符类中,连字符具有特殊的含义。可以将连字符作为类的第一个字符或最后一个字符。
[-a-zA-Z0-9]
[a-zA-Z0-9-]
在一些正则表达式实现中,你也可以直接放在一个范围后面。
如果你把连字符放在其他地方,你需要转义它以便将它添加到你的类中。
实际正则表达式实现:
[a-z-A-Z0-9]
作为字符串字面值:
string reg = "[a-z\-A-Z0-9]";
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- Clang bug?使用指针作为模板参数
- Visual Studio or boost::asio bug?
- Boost lexical_cast<std::string>(int) MSVC 2008 bug
- 这是boost regex的bug吗?
- Boost::asio::async_write混合来自两个消息的数据(bug)
- JWT(JSON Web Token)在C++中使用boost和openssl bug