https://stackoverflow.com/questions/6770898/unknown-escape-sequence-error-in-go
例如以上链接中的错误
#include <iostream> #include <boost/regex.hpp> #include <string> using namespace std; int main() { std::string regstr = "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"; boost::regex expression(regstr); std::string str = "192.168.0.3熟悉这个文图 192.168.1.1以上"; boost::smatch what; std::string::const_iterator begin = str.begin(); std::string::const_iterator end = str.end(); while (boost::regex_search(begin, end, what, expression)) { std::string msg = what[0]; std::cout<< "start:" << what[0].first - str.begin() << "\tend:" << what[0].second - str.begin() << std::endl; std::cout << "0 :" << msg.c_str() << std::endl; begin = what[0].second; } return 0; }
编译
g++ -std=c++14 -Wall -O3 -finline-functions -lboost_regex -o main main.cpp && ./main
报错:
unknown escape sequence: .
原因:
字符串string里“\{”表示{
但是boost::regex中,需要“\\{”。 第一个"\"表示提取后面的“\{”串。第二个才是表意。
因此
std::string regstr = "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+";
需要改成
std::string regstr = "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+";
详细解释见最上面链接,或者下方截图。
原文:http://www.cnblogs.com/misszhu-home/p/7719577.html