#include <regex>
#include <string>
#include <iostream>
using namespace std;
std::string regexEscape(std::string str) {
return std::regex_replace(str, std::regex(R"([.^$|()[\]{}*+?\\])"), R"(\$&)");
}
int main()
{
std::cout << "Test escaped pattern: " << regexEscape("[da-d$\\]") << std::endl; // = > \[da-d\$\\\]
std::string key = "\\56";
string input = "John\\56 Fred\\12";
std::regex rx(R"((\w+))" + regexEscape(key));
smatch m;
if (std::regex_search(input, m, rx)) {
std::cout << "Who has \\56? - " << m[1].str() << std::endl;
}
}
I2luY2x1ZGUgPHJlZ2V4PgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdGQ6OnN0cmluZyByZWdleEVzY2FwZShzdGQ6OnN0cmluZyBzdHIpIHsKCXJldHVybiBzdGQ6OnJlZ2V4X3JlcGxhY2Uoc3RyLCBzdGQ6OnJlZ2V4KFIiKFsuXiR8KClbXF17fSorP1xcXSkiKSwgUiIoXCQmKSIpOwp9CmludCBtYWluKCkKewoJc3RkOjpjb3V0IDw8ICJUZXN0IGVzY2FwZWQgcGF0dGVybjogIiA8PCByZWdleEVzY2FwZSgiW2RhLWQkXFxdIikgIDw8IHN0ZDo6ZW5kbDsgLy8gPSA+IFxbZGEtZFwkXFxcXQoJc3RkOjpzdHJpbmcga2V5ID0gIlxcNTYiOwoJc3RyaW5nIGlucHV0ID0gIkpvaG5cXDU2IEZyZWRcXDEyIjsKCXN0ZDo6cmVnZXggcngoUiIoKFx3KykpIiArIHJlZ2V4RXNjYXBlKGtleSkpOwoJc21hdGNoIG07CglpZiAoc3RkOjpyZWdleF9zZWFyY2goaW5wdXQsIG0sIHJ4KSkgewoJICAgIHN0ZDo6Y291dCA8PCAiV2hvIGhhcyBcXDU2PyAtICIgPDwgbVsxXS5zdHIoKSA8PCBzdGQ6OmVuZGw7Cgl9Cn0=