diff --git a/pkgs/racket-test-core/tests/racket/basic.rktl b/pkgs/racket-test-core/tests/racket/basic.rktl index 1e49626a45..49502be398 100644 --- a/pkgs/racket-test-core/tests/racket/basic.rktl +++ b/pkgs/racket-test-core/tests/racket/basic.rktl @@ -1121,6 +1121,8 @@ (test "x&cy&z" regexp-replace* #rx"a(.)" "xabcyawz" "\\&") (test "x\\cy\\z" regexp-replace* #rx"a(.)" "xabcyawz" "\\\\") +(test "ap0p0le" regexp-replace* #rx"p" "apple" "\\0\\$0") + ;; Test sub-matches with procedure replace (second example by synx) (test "myCERVEZA myMI Mi" regexp-replace* "([Mm])i ([a-zA-Z]*)" "mi cerveza Mi Mi Mi" diff --git a/racket/collects/racket/private/string.rkt b/racket/collects/racket/private/string.rkt index b4a7c9847c..298a873e4a 100644 --- a/racket/collects/racket/private/string.rkt +++ b/racket/collects/racket/private/string.rkt @@ -410,7 +410,9 @@ (or (and (equal? (char->integer #\&) next) #"&") (and (equal? (char->integer #\\) next) - #"\\"))) + #"\\") + (and (equal? (char->integer #\$) next) + #""))) => (lambda (s) (cons s (loop (add1 (cdar m)))))] [else