bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12622: replace-regexp-in-string


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.








reply via email to

[Prev in Thread] Current Thread [Next in Thread]