- escape_map.push_back(pair<string, string>("\\", "\\\\"));
- escape_map.push_back(pair<string, string>("^", "\\^"));
- escape_map.push_back(pair<string, string>("$", "\\$"));
- escape_map.push_back(pair<string, string>("{", "\\{"));
- escape_map.push_back(pair<string, string>("}", "\\}"));
- escape_map.push_back(pair<string, string>("[", "\\["));
- escape_map.push_back(pair<string, string>("]", "\\]"));
- escape_map.push_back(pair<string, string>("(", "\\("));
- escape_map.push_back(pair<string, string>(")", "\\)"));
- escape_map.push_back(pair<string, string>("+", "\\+"));
- escape_map.push_back(pair<string, string>("*", "\\*"));
- escape_map.push_back(pair<string, string>(".", "\\."));
+ escape_map.push_back(P("$", "_x_$"));
+ escape_map.push_back(P("{", "_x_{"));
+ escape_map.push_back(P("}", "_x_}"));
+ escape_map.push_back(P("[", "_x_["));
+ escape_map.push_back(P("]", "_x_]"));
+ escape_map.push_back(P("(", "_x_("));
+ escape_map.push_back(P(")", "_x_)"));
+ escape_map.push_back(P("+", "_x_+"));
+ escape_map.push_back(P("*", "_x_*"));
+ escape_map.push_back(P(".", "_x_."));
+ escape_map.push_back(P("\\", "(?:\\\\|\\\\backslash)"));
+ escape_map.push_back(P("~", "(?:\\\\textasciitilde|\\\\sim)"));
+ escape_map.push_back(P("^", "(?:\\^|\\\\textasciicircum\\{\\}|\\\\mathcircumflex)"));
+ escape_map.push_back(P("_x_", "\\"));