zsh-users
 help / color / mirror / code / Atom feed
From: "TJ Luoma" <luomat@gmail.com>
To: ZyX <kp-pav@yandex.ru>
Cc: "Zsh-Users List" <zsh-users@zsh.org>
Subject: Re: input foo, output '[F|f][O|o][O|o]'?
Date: Mon, 01 Jul 2013 20:58:26 -0400	[thread overview]
Message-ID: <E7CF18D5-CB4B-4E80-B7E0-40D5930E42DD@gmail.com> (raw)
In-Reply-To: <694051372704284@web26e.yandex.ru>


On 1 Jul 2013, at 14:44, ZyX wrote:

> I do not think you will find a way to do this. All regex engines 
> (precisely, programs that are using them) I know support a way to set 
> case sensitivity for the whole regular expression and some support 
> toggling this for a part of regular expression. In grep this is an -i 
> switch, for vim it is either /i or \c/\C, for sed this is /i, for PCRE 
> and perl this is additionally (?i) "atom" (additionally to other ways 
> of toggling the behavior which are highly dependent on programs 
> embedding PCRE; for perl this is usual /i flag). Even zsh globs do 
> support (#i).

Phil Pennock's version worked great:

% foo=CrashPlan
% for c in ${(s::)foo}; do print -n "[${(U)c}|${(L)c}]";done; print
[C|c][R|r][A|a][S|s][H|h][P|p][L|l][A|a][N|n]
%


> By the way, what regex engine is your output for? Any I am aware of 
> parse "[N|n]" as "either one of three characters: N, n, or pipe".

Really? I can think of several that support it. Maybe it's because I'm 
old enough to remember when a lot of these utilities didn't have 'ignore 
case'

% echo "foo\nbar\nbat" | egrep -v '[F|f]'
bar
bat

% echo "foo\nbar\nbat" | sed 's#[F|f][O|o][O|o]#XXX#g'
XXX
bar
bat

You can also use it for matching case/esac :

case "$i" in
	[C|c][R|r][A|a][S|s][H|h][P|p][L|l][A|a][N|n])
			echo "matched crashplan"
	;;

	*)
			echo "No Match"
	;;

esac


> I am also assuming XY problem here: what for do you need such 
> conversion? You should consider lowercasing the tested string if 
> nothing like -i is available.

It's for use with the AddDescription directive for .htaccess which (from 
what I understand) takes its case sensitivity from the underlying 
filesystem when matching filenames. There's no "ignore case" flag or 
anything else that I can use with it, so my only option (at least, the 
only one I can think of) is the one that I suggested. For example, if I 
wanted to add this for any files which start with 'BBEdit' (case 
insensitive) this is what I'd need to use:

	AddDescription "<a href='http://barebones.com/bbedit'>A text editor 
that doesn't suck</a>" [B|b][B|b][E|e][D|d][I|i][T|t]*

I verified that it works, but typing that stuff manually is tedious and 
highly error prone, which made it the perfect place for a shell script 
:-)

TjL


  reply	other threads:[~2013-07-02  0:58 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-01 17:59 TJ Luoma
2013-07-01 18:44 ` ZyX
2013-07-02  0:58   ` TJ Luoma [this message]
2013-07-02  1:30     ` Lawrence Velázquez
2013-07-02  1:53     ` Benjamin R. Haskell
2013-07-02  4:24       ` TJ Luoma
2013-07-02  3:51     ` ZyX
2013-07-02  4:00       ` ZyX
2013-07-02 23:24         ` Phil Pennock
2013-07-01 19:37 ` Phil Pennock
2013-07-02  0:24   ` TJ Luoma
2013-07-01 23:51 ` Alex Satrapa
2013-07-02  0:38   ` Kurtis Rader
2013-07-02  1:11     ` TJ Luoma

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=E7CF18D5-CB4B-4E80-B7E0-40D5930E42DD@gmail.com \
    --to=luomat@gmail.com \
    --cc=kp-pav@yandex.ru \
    --cc=zsh-users@zsh.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.
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).