@@ -38,17 +38,24 @@ namespace {
38
38
static const std::regex capturingColonNonSlashRegex (" (.*?):[^/]+(.*?)" );
39
39
static const std::regex enclosedPlaceHolderRegex (" (.*?)\\ {[^/]+?\\ }(.*?)" );
40
40
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
+
41
52
std::string PrepareWildCardMatching (const std::string& value) {
42
- static const std::regex pattern (" /\\ *" );
43
- return std::regex_replace (value, pattern, " /.*" );
53
+ return ReplacePattern (value, " /*" , " /.*" );
44
54
}
45
55
46
56
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, " }" , " \\ }" );
52
59
}
53
60
}
54
61
0 commit comments