zsh-users
 help / color / mirror / code / Atom feed
* Testing whether a string matches any pattern from a list
@ 2024-11-15  0:12 Philippe Altherr
  2024-11-15  5:48 ` Roman Perepelitsa
  2024-11-15 10:29 ` Peter Stephenson
  0 siblings, 2 replies; 4+ messages in thread
From: Philippe Altherr @ 2024-11-15  0:12 UTC (permalink / raw)
  To: zsh-users

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

I have an array that contains a list of patterns and a string. I would like
to check whether the string matches any of the patterns in the array. For
example if patterns=("foo*" "*bar"), then a test for "foob", "obar", and
"foobar" should return true and one for "ooba" should return false.

I hoped that I could use the following:

if [[ -v patterns[(k)$string] ]]; then ... fi;

Unfortunately, the pattern matching effect of the subscript flag
<https://zsh.sourceforge.io/Doc/Release/Parameters.html#Subscript-Flags> (k)
only works for associative arrays, not for regular arrays. I fixed the
"problem" by turning my array of patterns into an associative array:

local -A patterns=("foo*" X "*bar" X)

It's not a big deal but it feels a bit unnecessarily complicated. Is there
a simpler way to achieve this?

If not, would it make sense to change (k) and (K) to also do pattern
matching on regular arrays?

Philippe

[-- Attachment #2: Type: text/html, Size: 1231 bytes --]

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

end of thread, other threads:[~2024-11-15 10:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-15  0:12 Testing whether a string matches any pattern from a list Philippe Altherr
2024-11-15  5:48 ` Roman Perepelitsa
2024-11-15 10:29 ` Peter Stephenson
2024-11-15 10:35   ` Peter Stephenson

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).