From: Francis Galiegue <fg@one2team.com>
To: Ian Hilt <ian.hilt@gmx.com>
Cc: Junio C Hamano <gitster@pobox.com>,
Git Mailing List <git@vger.kernel.org>,
Pierre Habouzit <madcoder@debian.org>
Subject: Re: [PATCH] git send-email: edit recipient addresses with the --compose flag
Date: Mon, 10 Nov 2008 08:49:36 +0100 [thread overview]
Message-ID: <200811100849.36736.fg@one2team.com> (raw)
In-Reply-To: <alpine.LFD.2.00.0811091910570.21142@sys-0.hiltweb.site>
Le Monday 10 November 2008 01:38:30 Ian Hilt, vous avez écrit :
> On Sun, 9 Nov 2008, Junio C Hamano wrote:
> > Ian Hilt <ian.hilt@gmx.com> writes:
> > > On Sun, 9 Nov 2008, Francis Galiegue wrote:
> > >> Le Sunday 09 November 2008 13:59:48 Ian Hilt, vous avez écrit :
> > >> > + if ($c_file =~ /^To:\s*+(.+)\s*\nCc:/ism) {
> > >>
> > >> Greedy operators are only supported with perl 5.10 or more... I think
> > >> it's a bad idea to use them...
> > >
> > > The problem here was that a space should follow the field, but it may
> > > not. The user may unwarily backup over it. "\s*" would match this
> > > case.
> > >
> > > But if there is a space, it is included in the "(.+)". So I tried
> > > "\s+", which did not include the space, but it won't include the first
> > > address if there isn't a space after the field.
> > >
> > > The quantified subpattern seemed to do the trick. But, if it could
> > > result in a dependency issue, I would agree this would be a bad idea.
> >
> > You expect something non-blank there anyway, so why not do:
> >
> > To:\s*(\S.*?)\s*\n....
>
> That works. Although, I seem to be missing Francis' point.
No. The _lazy_ quantifiers (*?, ??, *?, +?, {...}?) are supported all right.
But they should be avoided in general.
> According
> to perlre, a quantified subpattern is "greedy". So a "greedy operator"
> is any one of the standard quantified subpatterns. The "+" and "?"
> modify its matching behavior. And it seems to me that it _has_ to use a
> q.s. to work ...
My wording may be bad, then. They're not greedy, they just don't allow for
backtracking. They are more than greedy. Let me explain.
Consider "number 42" for instance. If you match it against:
* .*(\d+) => $1 would be "2": the * eats everything but _has_ to backtrack for
\d+ to get anything, but just one number is enough;
* .*?(\d+) => $1 would be "42": as *? is lazy, this means that after each
match, it looks to see whether the next element in the regex would match
anything; as soon as \d+ matches 4, .*? stops there;
* .*+(\d+) => $1 would match nothing! *+ eats everything, but the + afterwards
_doesn't allow it to backtrack_.
I hope this makes things a little clearer ;) I think the correct term for *+,
++, ?+ etc is "possessive" quantifiers, I'm just not sure.
--
Francis Galiegue
ONE2TEAM
Ingénieur système
Mob : +33 (0) 6 83 87 78 75
Tel : +33 (0) 1 78 94 55 52
fge@one2team.com
40 avenue Raymond Poincaré
75116 Paris
next prev parent reply other threads:[~2008-11-10 7:51 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-09 12:59 [PATCH] git send-email: edit recipient addresses with the --compose flag Ian Hilt
2008-11-09 14:13 ` Francis Galiegue
2008-11-09 20:09 ` Ian Hilt
2008-11-09 22:09 ` Junio C Hamano
2008-11-10 0:38 ` Ian Hilt
2008-11-10 5:18 ` Junio C Hamano
2008-11-10 18:12 ` Ian Hilt
2008-11-10 7:49 ` Francis Galiegue [this message]
2008-11-10 8:08 ` Aristotle Pagaltzis
2008-11-11 1:49 ` Tait
2008-11-11 11:30 ` Francis Galiegue
2008-11-11 20:47 ` Ian Hilt
2008-11-11 20:53 ` Ian Hilt
2008-11-11 20:53 ` Francis Galiegue
2008-11-11 22:14 ` Tait
2008-11-10 7:57 ` Francis Galiegue
2008-11-10 7:59 ` Francis Galiegue
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200811100849.36736.fg@one2team.com \
--to=fg@one2team.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ian.hilt@gmx.com \
--cc=madcoder@debian.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.