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]+";
详细解释见最上面链接,或者下方截图。