extmod/modure: Allow \\ in re.sub replacements.

pull/6470/merge
Andrew Leech 2020-09-25 12:27:02 +10:00 zatwierdzone przez Damien George
rodzic 0fd0eb00aa
commit 319437d4bd
2 zmienionych plików z 9 dodań i 0 usunięć

Wyświetl plik

@ -343,6 +343,9 @@ STATIC mp_obj_t re_sub_helper(size_t n_args, const mp_obj_t *args) {
const char *end_match = match->caps[match_no * 2 + 1];
vstr_add_strn(&vstr_return, start_match, end_match - start_match);
}
} else if (*repl == '\\') {
// Add the \ character
vstr_add_byte(&vstr_return, *repl++);
}
} else {
// Just add the current byte from the replacement string

Wyświetl plik

@ -43,6 +43,9 @@ print(
)
)
# \g immediately followed by another \g
print(re.sub("(abc)", r"\g<1>\g<1>", "abc"))
# no matches at all
print(re.sub("a", "b", "c"))
@ -69,3 +72,6 @@ try:
re.sub(123, "a", "a")
except TypeError:
print("TypeError")
# Include \ in the sub replacement
print(re.sub("b", "\\\\b", "abc"))