Subject: Re: bug#31584: 27.0.50; Document again what match re-search-backward finds

From: Eric Abrahamsen <[email-masked]>
Date: Thu, 24 May 2018 14:42:44 -0700

Michael Heidegger <[email-masked]> writes:

> Hello,
>
> a user asked in emacs-help why
>
>    (re-search-backward "a*")
>
> at the end of a line consisting only "a"s didn't move point.  With
> today's documentation, that question can't be answered.
>
> Some time ago, we had this sentence in the docstring:
>
>    The match found is the one starting last in the buffer
>    and yet ending before the origin of the search.
>
> but it has been removed.  I think we need to say something like that,
> otherwise the semantics of backward re search is unclear.

I've been bitten by this before. I'm sure the sentence you cite is
correct, but I would suggest something more explicit about backwards
searches. The most useful thing I could have read when I was wondering
why this didn't work would be something like: "re-search-backward always
behaves "non-greedily", i.e., it will find the shortest match before
point".

That might not be technically correct, but those are the terms that
would have made sense to me: in particular, the "*" token is supposed to
be "greedy", so why isn't it greedy backwards? This doesn't explain why
it isn't, but it would have explicitly told me that it wouldn't be.

Eric