chaînes / chaînes correspondant dans tcsh
J'ai du mal à essayer d'utiliser un concis comparaison instruction pour éviter un tas de "si a = b ou a = c = d ou a = e", etc.
Au lieu de cela, je suis en train d'utiliser les regex et le pattern matching comme vous le feriez en perl.
avec
set st = "rouge"
la ligne
if ($st =~ jaune|bleu|rouge|vert)
ne fonctionne tout simplement pas (si: la Syntaxe de l'Expression.)
J'ai essayé avec les guillemets, les parenthèses, mais je n'ai jamais eu le résultat escompté, si aucune erreur.
est-il un moyen d'éviter les lourdes construire:
if ($st == jaune) || ($st == bleu) || ($st == rouge) || ($st == verte) ?
Ou une autre façon de poser la même question: est-tcsh de permettre quelque chose comme "si une chaîne contient la chaîne b"? Je ne pouvais pas trouver toute notion de sous-chaîne dans tcsh de référence.
Un million de mercis!
OriginalL'auteur MadMacs | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas tsch, mais en regardant les infos de cette page (en vertu de Caractères Spéciaux):
http://www.tcsh.org/tcsh.html/Filename_substitution.htmlhttp://www.cs.duke.edu/csl/docs/csh.html
il semble que vous devez vous entourer de vos couleurs avec des accolades:
OriginalL'auteur Gerrat
La chose sur le côté droit de la
~=
opérateur est un "glob-pattern", pas une expression régulière. (Par exemple, dans une regexp.
correspond à tout caractère, et.*
correspond à zéro ou plusieurs caractères arbitraires; la glob-modèle équivalents sont?
et*
.){...,...,...}
fait partie de la syntaxe de glob-modèles.man tcsh
pour une description complète.Si vous avez besoin pour correspondre à l'expression régulière, vous pouvez utiliser le
expr
de commande;man expr
ouinfo expr
pour plus de détails.OriginalL'auteur Keith Thompson