Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: alternation option end of string



On Fri, May 1, 2026 at 5:44 PM Eric Cook <llua@xxxxxxx> wrote:
>
> On 5/1/26 8:36 PM, Ray Andrews wrote:
> >
> > On 2026-05-01 16:56, Ray Andrews wrote:
> >
> > I must be doing something wrong:
> >
> > % string='cats'
> >
> > % out="${(M)string##cat(s|$)}"; echo $out
> > cats
> >
> > % string='cat'
> >
> > % out=${(M)string##cat(s|$)}; echo $out
> >
> > [nothing]
>
> So, bart guessed correct, you are using pattern matching.
> string=cats; print -- ${(M)string##cat(s|)}
>
> tho, in this particular case, you could just do:  ${(M)string##cats#}

s# requires extendedglob to be set, (s|) does not.

There are some edge cases where (s|) vs. (|s) produce different
results, but you're unlikely to run into them.




Messages sorted by: Reverse Date, Date, Thread, Author