summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extmod/modure.c6
-rw-r--r--tests/extmod/ure_split.py10
-rw-r--r--tests/extmod/ure_sub.py4
3 files changed, 17 insertions, 3 deletions
diff --git a/extmod/modure.c b/extmod/modure.c
index 36c987a80..d9e5451eb 100644
--- a/extmod/modure.c
+++ b/extmod/modure.c
@@ -187,7 +187,7 @@ STATIC mp_obj_t ure_exec(bool is_anchored, uint n_args, const mp_obj_t *args) {
}
Subject subj;
size_t len;
- subj.begin = mp_obj_str_get_data(args[1], &len);
+ subj.begin_line = subj.begin = mp_obj_str_get_data(args[1], &len);
subj.end = subj.begin + len;
int caps_num = (self->re.sub + 1) * 2;
mp_obj_match_t *match = m_new_obj_var(mp_obj_match_t, char *, caps_num);
@@ -220,7 +220,7 @@ STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) {
Subject subj;
size_t len;
const mp_obj_type_t *str_type = mp_obj_get_type(args[1]);
- subj.begin = mp_obj_str_get_data(args[1], &len);
+ subj.begin_line = subj.begin = mp_obj_str_get_data(args[1], &len);
subj.end = subj.begin + len;
int caps_num = (self->re.sub + 1) * 2;
@@ -280,7 +280,7 @@ STATIC mp_obj_t re_sub_helper(size_t n_args, const mp_obj_t *args) {
size_t where_len;
const char *where_str = mp_obj_str_get_data(where, &where_len);
Subject subj;
- subj.begin = where_str;
+ subj.begin_line = subj.begin = where_str;
subj.end = subj.begin + where_len;
int caps_num = (self->re.sub + 1) * 2;
diff --git a/tests/extmod/ure_split.py b/tests/extmod/ure_split.py
index a8b9c1686..7e6ef3990 100644
--- a/tests/extmod/ure_split.py
+++ b/tests/extmod/ure_split.py
@@ -31,3 +31,13 @@ print(s)
r = re.compile(b"x")
s = r.split(b"fooxbar")
print(s)
+
+# using ^
+r = re.compile("^ab")
+s = r.split("abababcabab")
+print(s)
+
+# using ^ with |
+r = re.compile("^ab|cab")
+s = r.split("abababcabab")
+print(s)
diff --git a/tests/extmod/ure_sub.py b/tests/extmod/ure_sub.py
index ae6ad28d6..806c38957 100644
--- a/tests/extmod/ure_sub.py
+++ b/tests/extmod/ure_sub.py
@@ -75,3 +75,7 @@ except TypeError:
# Include \ in the sub replacement
print(re.sub("b", "\\\\b", "abc"))
+
+# Using ^, make sure it doesn't repeatedly match
+print(re.sub("^ab", "*", "abababcabab"))
+print(re.sub("^ab|cab", "*", "abababcabab"))