diff --git a/collects/tests/mzscheme/rx.ss b/collects/tests/mzscheme/rx.ss index ea97ba16f4..d23d34526e 100644 --- a/collects/tests/mzscheme/rx.ss +++ b/collects/tests/mzscheme/rx.ss @@ -795,6 +795,8 @@ (#"[\1]" #"\1" (#"\1")) (#"\\10()()()()()()()()()()" #"a" #f) (#"a(?<=)b" #"ab" (#"ab")) ;; << added "=" to pattern + (#"(?<=qq)b*" #"aqbbbqqbb" (#"bb")) ;; << added + (#"(?<=q?q)b*" #"aqbbbqqbb" (#"bbb")) ;; << added (#"()" #"a" (#"" #"")) #"[\\x]" #"[\\x]" diff --git a/src/mzscheme/src/regexp.c b/src/mzscheme/src/regexp.c index 1259d7dcab..df442a5d83 100644 --- a/src/mzscheme/src/regexp.c +++ b/src/mzscheme/src/regexp.c @@ -848,6 +848,10 @@ regpiece(int *flagp, int parse_flags, int at_start) } else *flagp = (op != '+') ? WORST : HASWIDTH; *flagp |= SPSTART; + if ((op == '?') && (flags & SPFIXED)) { + *flagp |= SPFIXED; + regmatchmin = 0; + } if (regparsestr[regparse+1] == '?') { greedy = 0;