FindAdv: Amend2 dacd2c45: Handle search for '{' and '}'

Allow for using 'a{2,7}' to find 2 to 7 consecutive chars 'a'
This commit is contained in:
Kornel Benko 2021-01-18 16:06:40 +01:00
parent a0bd34a9d1
commit 96f9c8fb19

View File

@ -769,6 +769,7 @@ string correctRegex(string t, bool withformat)
regex wordre("(\\\\)*(\\\\((backslash|mathcircumflex) ?|[\\[\\]\\{\\}]))");
size_t lastpos = 0;
smatch sub;
bool backslashed = false;
for (sregex_iterator it(t.begin(), t.end(), wordre), end; it != end; ++it) {
sub = *it;
string replace;
@ -779,21 +780,30 @@ string correctRegex(string t, bool withformat)
if (sub.str(4) == "backslash") {
replace = "\\";
if (withformat) {
// tranforms '\backslash \{' into '\{'
// and '\{' into '{'
sregex_iterator it2 = it;
++it2;
smatch sub2 = *it2;
if (sub2.str(3) == "{")
replace = "";
else if (sub2.str(3) == "}")
if ((sub2.str(3) == "{") || (sub2.str(3) == "}")) {
replace = "";
backslashed = true;
}
}
}
else if (sub.str(4) == "mathcircumflex")
replace = "^";
else if (withformat && (sub.str(3) == "{"))
replace = accents["braceleft"];
else if (withformat && (sub.str(3) == "}"))
replace = accents["braceright"];
else if (backslashed) {
backslashed = false;
if (withformat && (sub.str(3) == "{"))
replace = accents["braceleft"];
else if (withformat && (sub.str(3) == "}"))
replace = accents["braceright"];
else {
// else part should not exist
LASSERT(1, /**/);
}
}
else
replace = sub.str(3);
}