unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Alan Mackenzie<none@example.invalid>
Subject: Re: end-of-line $ in multiline regexp replace
Date: Fri, 31 Oct 2003 08:04:30 +0000	[thread overview]
Message-ID: <e25tnb.u8.ln@acm.acm> (raw)
In-Reply-To: bnsa84$1e1p$1@otis.netspace.net.au

Leo <leo.broska@nospam.isys.com.au> wrote on Fri, 31 Oct 2003 11:22:25 +1100:
> hi there

> want to replace a multiline regexp by an one-line replacement. (in fact i
> just want to delete the line with the regexp.)

> so, at first i tried:
>         (query-replace-regexp ".*bytes.*$[ctrl-q][ctrl-j]" "" nil nil nil)
> which did not find any line. :-(

> then i just tried the same without the end-of-line "$":
>         (query-replace-regexp ".*bytes.*[ctrl-q][ctrl-j]" "" nil nil nil)
> and that worked.

> i don't understand, why? the first regexp ".*bytes.*$[ctrl-q][ctrl-j]" seems
> to me even >>more valid<< then the second one.

> any explanations?

Yes.  It's on the page "Regexp Special" in the Elisp manual:

:      For historical compatibility reasons, `$' can be used only at the
:      end of the regular expression, or before `\)' or `\|'.

I think this is crazy, but there you go.  There is no matching warning on
the corresponding page ("Regexps") in the Emacs manual (at least, there
wasn't in October 2001), which seems like a bug to me.

A workaround is to enclose such a `$' in parentheses:  "\($\)" [or
"\\($\\)" if you're writing it as a string in a Lisp program].

> tanks and cheers, leo

-- 
Alan Mackenzie (Munich, Germany)
Email: aacm@muuc.dee; to decode, wherever there is a repeated letter
(like "aa"), remove half of them (leaving, say, "a").

  reply	other threads:[~2003-10-31  8:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-31  0:22 end-of-line $ in multiline regexp replace Leo
2003-10-31  8:04 ` Alan Mackenzie [this message]
2003-10-31 16:50 ` Edward Dodge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e25tnb.u8.ln@acm.acm \
    --to=none@example.invalid \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).