@@ -38,17 +38,24 @@ namespace {
3838 static const std::regex capturingColonNonSlashRegex (" (.*?):[^/]+(.*?)" );
3939 static const std::regex enclosedPlaceHolderRegex (" (.*?)\\ {[^/]+?\\ }(.*?)" );
4040
41+ std::string ReplacePattern (std::string const & in, std::string const & pattern, std::string const & replacement) {
42+ std::string result = in;
43+ std::size_t pos = 0 ;
44+ // Replace all occurrences of pattern with replacement
45+ while ((pos = result.find (pattern, pos)) != std::string::npos) {
46+ result.replace (pos, pattern.length (), replacement);
47+ pos += replacement.length (); // Move over change
48+ }
49+ return result;
50+ }
51+
4152 std::string PrepareWildCardMatching (const std::string& value) {
42- static const std::regex pattern (" /\\ *" );
43- return std::regex_replace (value, pattern, " /.*" );
53+ return ReplacePattern (value, " /*" , " /.*" );
4454 }
4555
4656 std::string EscapeCurlyBraces (const std::string& value) {
47- static const std::regex curlyBraceOpenPattern (" \\ {" );
48- static const std::regex curlyBraceClosePattern (" \\ }" );
49-
50- std::string intermediate = std::regex_replace (value, curlyBraceOpenPattern, " \\ {" );
51- return std::regex_replace (intermediate, curlyBraceClosePattern, " \\ }" );
57+ std::string intermediate = ReplacePattern (value, " {" , " \\ {" );
58+ return ReplacePattern (intermediate, " }" , " \\ }" );
5259 }
5360}
5461
0 commit comments