Browse Source

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

pull/6470/merge
Andrew Leech 4 years ago
committed by Damien George
parent
commit
319437d4bd
  1. 3
      extmod/modure.c
  2. 6
      tests/extmod/ure_sub.py

3
extmod/modure.c

@ -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

6
tests/extmod/ure_sub.py

@ -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"))

Loading…
Cancel
Save