zsh-users
 help / color / mirror / code / Atom feed
* pattern matching question
@ 2006-10-11 13:02 arno.
  2006-10-11 13:15 ` Frank Terbeck
  0 siblings, 1 reply; 5+ messages in thread
From: arno. @ 2006-10-11 13:02 UTC (permalink / raw)
  To: zsh-users

[-- Attachment #1: Type: text/plain, Size: 958 bytes --]

Hello,
I have an array, for example: 

local -a list
list=("... one giraffe ..." "... two cows ..." "... one monkey ..." "...  three lemmings ...")

("..." can represent anything)

and I want to get parts of each item each time a specific pattern 
occurs. For example, I want to get the word after "one". I therefore 
want to finish with an array containing ("giraffe" "monkey")

I found a way with a loop :

local -a secondlist
local item

for item in $list; do
    if [[ $item = (#b)*one\ ([a-z]#)* ]]; then
        secondlist=($secondlist $match[1])
    fi
done
print -l $secondlist

Great, works fine.
But I was wondering if there was something more zsh-ish that could allow 
me to do it in one instruction.

I found :

print -l ${${(M)list##*one ([a-z]#)*}//(#b)*one ([a-z]#)*/$match[1]}

but I think this is inefficient as the pattern has to be evaluated 
twice.

What would be the better way to do that ?

thanks

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-10-11 14:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-10-11 13:02 pattern matching question arno.
2006-10-11 13:15 ` Frank Terbeck
2006-10-11 13:25   ` Frank Terbeck
2006-10-11 13:29   ` Peter Stephenson
2006-10-11 14:08     ` arno.

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).