From 9ca5f6b3409452c95df5f70af4d182f6a80bf024 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 16 Apr 2010 17:27:53 -0400 Subject: [PATCH] fix regexp-replace* --- collects/scheme/private/string.ss | 3 +-- collects/tests/mzscheme/basic.ss | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/collects/scheme/private/string.ss b/collects/scheme/private/string.ss index 9e6e4277f9..9b7077b860 100644 --- a/collects/scheme/private/string.ss +++ b/collects/scheme/private/string.ss @@ -328,9 +328,8 @@ "expected a byte string result: ") v)) v)) - (define rx:sub #rx#"^(?:[^&\\]*[\\][&\\])*[^&\\]*(?:&|[\\](?=[^&\\]|$))") (define need-replac? (and (not (procedure? replacement)) - (regexp-match? rx:sub replacement))) + (regexp-match? #rx#"[\\&]" replacement))) (define (replac ms str) (if need-replac? ((if (string? str) bytes->string/utf-8 values) diff --git a/collects/tests/mzscheme/basic.ss b/collects/tests/mzscheme/basic.ss index 34b8b8300d..5efd3875a7 100644 --- a/collects/tests/mzscheme/basic.ss +++ b/collects/tests/mzscheme/basic.ss @@ -1071,6 +1071,8 @@ (test "==1=2===3==4==" regexp-replace* "2*" "1234" (lambda (s) (string-append "=" s "="))) (test "x&b\\ab=cy&w\\aw=z" regexp-replace* #rx"a(.)" "xabcyawz" "\\&\\1\\\\&\\99=") +(test "x&cy&z" regexp-replace* #rx"a(.)" "xabcyawz" "\\&") +(test "x\\cy\\z" regexp-replace* #rx"a(.)" "xabcyawz" "\\\\") ;; Test weird port offsets: (define (test-weird-offset regexp-match regexp-match-positions)