|
From: | Andreas Röhler |
Subject: | bug#12622: replace-regexp-in-string |
Date: | Thu, 11 Oct 2012 18:38:00 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120825 Thunderbird/15.0 |
Am 11.10.2012 16:44, schrieb Andreas Schwab:
Andreas Röhler <andreas.roehler@easy-emacs.de> writes:Also would expect a respective form working with replace-regexp-in-string (setq mystring "[.A foobar] [.B baz]") (replace-regexp-in-string "\\_<\\w+\\_>" (concat "\\\\" (match-string-no-properties 0) ) mystring) but it fails.Fails in which way? What do you expect, and what do you get?When commenting "(match-string 0 str)" as follows it subr.el it works (setq matches (cons (replace-match (if (stringp rep) rep (funcall rep ;; (match-string 0 str) )) fixedcase literal str subexp) Which has some plausibility: when receiving a user-specified function, there must not be that argument.Why? That's what the doc string documents. Andreas.
(setq mystring "[.A foobar] [.B baz]") ;; works nice in buffer (while (re-search-forward "\\_<\\w+\\_>" nil t 1) (replace-match (concat "\\\\\\\\" (match-string-no-properties 0) ))) ==> [.A \\foobar] [.B \\baz] has unpredictable results (setq mystring "[.A foobar] [.B baz]") (replace-regexp-in-string "\\_<\\w+\\_>" (concat "\\\\" (match-string-no-properties 0)) mystring) ==> "[.A \\ext in that fi] [.B \\ext in that fi]" for example, Docstring says: "If it is a function, it is called with the actual text of each match, and its value is used as the replacement text." Which is not the case AFAIS.
[Prev in Thread] | Current Thread | [Next in Thread] |