Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: substitution groups and patterns i replace string (Emacs' \\1 etc.)
- X-seq: zsh-users 21359
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: Zsh Users <zsh-users@xxxxxxx>
- Subject: Re: substitution groups and patterns i replace string (Emacs' \\1 etc.)
- Date: Sun, 6 Mar 2016 08:15:38 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to; bh=HjOCYwLRbUMNICol627ANEkn3Wn8JZTd5RXRwR2El8U=; b=fyL0ONelDHBIHM7QSpMdMlOg1YD71Zkv1Bre7kGUg8PK9dm5+XccQqldDogSakyglE nkU36s4y+koJW9k8XXK4Jbng2VCRI9Cj/uADJYRhWyTAfxbDd5zUdfT5M2oB5Y6TKwN/ pFSCA3dWXrb5L49mUa2KoDIAsy4L7oGr3GGlsvhl8oHPxZ1qJRa3rudxihU8CTQwmvVp LrNwL0jQo8CjIfjQofmlbUSjxgoWSlWztlnbo62/d1v7leG0FPJtc0yX5NhXSVlG5KS+ KaUuroDQbHBJ/HyuLKgQagEHGDnFDpyTTmFugn0Z1PA9tWg3p6zSihMXCvDfzEYub7QA iQaA==
- In-reply-to: <87a8mccfmv.fsf@debian.uxu>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <87k2lk2ws9.fsf@debian.uxu> <20160303094140.705eb3bd@pwslap01u.europe.root.pri> <87a8mccfmv.fsf@debian.uxu>
On Sun, Mar 6, 2016 at 6:57 AM, Emanuel Berg <embe8573@xxxxxxxxxxxxx> wrote:
> Peter Stephenson <p.stephenson@xxxxxxxxxxx> writes:
>
>>> When I do substitution, can I do groups and
>>> patterns like in Emacs with \\1, \\2 to reference
>>> the particular matches, and thus construct the
>>> replace string out of them any way I like?
>>
>> You do it with $match, and if you need to refer to
>> positions in the original string, $mbegin and $mend.
>> See the description of the (#b) pattern in the
>> zshexpn manual page.
>
> I have now checked out the zshexpn(1) man page but the
> examples there are very complicated!
>
>> local -a match mbegin mend
>>
>> if [[ $url = (#b)http://(*) ]]; then print $match[1]
>> fi
% a="> Thanks, but this syntax is very bulky compared to
> Emacs and sed. How it is supposed to be used for
> a stream of text or a variable with several hit
> instances? I'm not saying it can't be done only
> compared to Emacs (and sed) it seems
> unnecessarily complicated."
% echo ${a//(#b)([aoeui])/${(U)match[1]}}
> ThAnks, bUt thIs syntAx Is vEry bUlky cOmpArEd tO
> EmAcs And sEd. HOw It Is sUppOsEd tO bE UsEd fOr
> A strEAm Of tExt Or A vArIAblE wIth sEvErAl hIt
> InstAncEs? I'm nOt sAyIng It cAn't bE dOnE Only
> cOmpArEd tO EmAcs (And sEd) It sEEms
> UnnEcEssArIly cOmplIcAtEd.
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author