unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* query-replace-regexp ... "Invalid repacement string '\.'"
@ 2006-09-24 23:56 s. keeling
  2006-09-25  6:33 ` Malte Spiess
  2006-09-25  6:55 ` David Kastrup
  0 siblings, 2 replies; 6+ messages in thread
From: s. keeling @ 2006-09-24 23:56 UTC (permalink / raw)


Hi.  I was trying to make it easy on myself using q-r-r replacing
'[^\]\.' (not a backslash, followed by a literal dot/period) with the
string (sans quotes) '\.', essentially "escaping" every dot/period in
the file.  "M-x query-replace" had no trouble with it but M-x
query-replace-regexp refused, spouting the error message in the
subject.

So how do you replace '.' with '\.' in emacs?  Googling's
(groups.google.com) turned up nothing useful (interesting, but not
useful).  I tried variations of '\\\.' (literal backslash followed by
literal period) to no effect.

Suggestions or pointers welcome.  Thanks.


-- 
Any technology distinguishable from magic is insufficiently advanced.
(*)    http://www.spots.ab.ca/~keeling          Linux Counter #80292
- -    http://www.faqs.org/rfcs/rfc1855.html    Please, don't Cc: me.
       Spammers! http://www.spots.ab.ca/~keeling/emails.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: query-replace-regexp ... "Invalid repacement string '\.'"
  2006-09-24 23:56 query-replace-regexp ... "Invalid repacement string '\.'" s. keeling
@ 2006-09-25  6:33 ` Malte Spiess
  2006-09-25  7:02   ` David Kastrup
       [not found]   ` <85vencl9ar.fsf@lola.goethe.zz>
  2006-09-25  6:55 ` David Kastrup
  1 sibling, 2 replies; 6+ messages in thread
From: Malte Spiess @ 2006-09-25  6:33 UTC (permalink / raw)


"s. keeling" <keeling@spots.ab.ca> writes:

> Hi.  I was trying to make it easy on myself using q-r-r replacing
> '[^\]\.' (not a backslash, followed by a literal dot/period) with the
> string (sans quotes) '\.', essentially "escaping" every dot/period in
> the file.  "M-x query-replace" had no trouble with it but M-x
> query-replace-regexp refused, spouting the error message in the
> subject.

In a regexp for a "\" you need to escape, so write "\\". "\]" is a
mistake.
A correct regexp for your intention should be
'[^\\]\.'
   --

> So how do you replace '.' with '\.' in emacs?

That should be fine.

> Suggestions or pointers welcome.  Thanks.

HTH

Malte

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: query-replace-regexp ... "Invalid repacement string '\.'"
  2006-09-24 23:56 query-replace-regexp ... "Invalid repacement string '\.'" s. keeling
  2006-09-25  6:33 ` Malte Spiess
@ 2006-09-25  6:55 ` David Kastrup
  2006-09-25  7:17   ` Malte Spiess
  1 sibling, 1 reply; 6+ messages in thread
From: David Kastrup @ 2006-09-25  6:55 UTC (permalink / raw)


"s. keeling" <keeling@spots.ab.ca> writes:

> Hi.  I was trying to make it easy on myself using q-r-r replacing
> '[^\]\.' (not a backslash, followed by a literal dot/period) with the
> string (sans quotes) '\.', essentially "escaping" every dot/period in
> the file.  "M-x query-replace" had no trouble with it but M-x
> query-replace-regexp refused, spouting the error message in the
> subject.
>
> So how do you replace '.' with '\.' in emacs?  Googling's
> (groups.google.com) turned up nothing useful (interesting, but not
> useful).  I tried variations of '\\\.' (literal backslash followed by
> literal period) to no effect.
>
> Suggestions or pointers welcome.  Thanks.

M-x query-replace-regexp RET \. RET \\. RET

. is not special in the replacement string.  You can also write

M-x query-replace-regexp RET \. RET \\\& RET

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: query-replace-regexp ... "Invalid repacement string '\.'"
  2006-09-25  6:33 ` Malte Spiess
@ 2006-09-25  7:02   ` David Kastrup
       [not found]   ` <85vencl9ar.fsf@lola.goethe.zz>
  1 sibling, 0 replies; 6+ messages in thread
From: David Kastrup @ 2006-09-25  7:02 UTC (permalink / raw)



[Oops, superseded]

Malte Spiess <i1tnews@arcor.de> writes:

> "s. keeling" <keeling@spots.ab.ca> writes:
>
>> Hi.  I was trying to make it easy on myself using q-r-r replacing
>> '[^\]\.' (not a backslash, followed by a literal dot/period) with the
>> string (sans quotes) '\.', essentially "escaping" every dot/period in
>> the file.  "M-x query-replace" had no trouble with it but M-x
>> query-replace-regexp refused, spouting the error message in the
>> subject.
>
> In a regexp for a "\" you need to escape, so write "\\". "\]" is a
> mistake.

No, it isn't.  Inside of [], \ is not special.

> A correct regexp for your intention should be
> '[^\\]\.'
>    --
>
>> So how do you replace '.' with '\.' in emacs?
>
> That should be fine.

Maybe something like

M-x query-replace-regexp RET \(^\|[^\]\)\. RET \1\\. RET

Or even

M-x query-replace-regexp RET \(\(^\|[^\]\)\(\\\\\)*\)\. RET \1\\. RET

(which considers a dot preceded by an even number of backslashes as
unescaped).

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: query-replace-regexp ... "Invalid repacement string '\.'"
       [not found]   ` <85vencl9ar.fsf@lola.goethe.zz>
@ 2006-09-25  7:14     ` Malte Spiess
  0 siblings, 0 replies; 6+ messages in thread
From: Malte Spiess @ 2006-09-25  7:14 UTC (permalink / raw)


David Kastrup <dak@gnu.org> writes:

> Malte Spiess <i1tnews@arcor.de> writes:
>
>> "s. keeling" <keeling@spots.ab.ca> writes:
>>
>>> Hi.  I was trying to make it easy on myself using q-r-r replacing
>>> '[^\]\.' (not a backslash, followed by a literal dot/period) with the
>>> string (sans quotes) '\.', essentially "escaping" every dot/period in
>>> the file.  "M-x query-replace" had no trouble with it but M-x
>>> query-replace-regexp refused, spouting the error message in the
>>> subject.
>>
>> In a regexp for a "\" you need to escape, so write "\\". "\]" is a
>> mistake.
>
> No, it isn't.  Inside of [], \ is not special.

Oh. Oops, sorry. Must admit I never used "\" inside of []. Didn't expect
a change there.

> Maybe something like
>
> M-x query-replace-regexp RET \(^\|[^\]\). RET \1\\. RET
>
> Or even
>
> M-x query-replace-regexp RET \(\(^\|[^\]\)\(\\\\\)*\). RET \1\\. RET
>
> (which considers a dot preceded by an even number of backslashes as
> unescaped).

In case he wants to replace the character before the "." as well (which
I doubt) '\\.' as a replacement string should do fine.

Else the proposed constructions with \(...\) and \1 (sometimes even \2
or \3) should work fine. This is a really useful feature, one should
learn how to use it to simplify lots of replacement tasks.

Greetings

Malte

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: query-replace-regexp ... "Invalid repacement string '\.'"
  2006-09-25  6:55 ` David Kastrup
@ 2006-09-25  7:17   ` Malte Spiess
  0 siblings, 0 replies; 6+ messages in thread
From: Malte Spiess @ 2006-09-25  7:17 UTC (permalink / raw)


David Kastrup <dak@gnu.org> writes:

> "s. keeling" <keeling@spots.ab.ca> writes:
>
>> Hi.  I was trying to make it easy on myself using q-r-r replacing
>> '[^\]\.' (not a backslash, followed by a literal dot/period) with the
>> string (sans quotes) '\.', essentially "escaping" every dot/period in
>> the file.  "M-x query-replace" had no trouble with it but M-x
>> query-replace-regexp refused, spouting the error message in the
>> subject.
>>
>> So how do you replace '.' with '\.' in emacs?  Googling's
>> (groups.google.com) turned up nothing useful (interesting, but not
>> useful).  I tried variations of '\\\.' (literal backslash followed by
>> literal period) to no effect.
>>
>> Suggestions or pointers welcome.  Thanks.
>
> M-x query-replace-regexp RET \. RET \\. RET

That would not work if there already is a "\" in the text. Your other
proposal is much better IMHO. (I think he does not want "\." to be
replaced with "\\.".)

I guess you just wanted to describe the general concept, this is just to
prevent confusion for other readers.

Greetings

Malte

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-09-25  7:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-24 23:56 query-replace-regexp ... "Invalid repacement string '\.'" s. keeling
2006-09-25  6:33 ` Malte Spiess
2006-09-25  7:02   ` David Kastrup
     [not found]   ` <85vencl9ar.fsf@lola.goethe.zz>
2006-09-25  7:14     ` Malte Spiess
2006-09-25  6:55 ` David Kastrup
2006-09-25  7:17   ` Malte Spiess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).