Obligement - L'Amiga au maximum

Dimanche 16 décembre 2018 - 04:33  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


En pratique : Correspondance de motif sur MorphOS
(Article écrit par Grzegorz Kraszewski et extrait de MorphOS Library - décembre 2009)


Note : traduction par David Brunet.

Introduction

La correspondance de motif compare une chaîne de caractères avec un motif. Le motif utilise une notation spécifique pour désigner des critères de correspondance. Une forme très simple et bien connue de correspondance de motif sont les caractères de remplacement (jokers) de MS-DOS "?" et "*". L'utilisation la plus courante de la correspondance de motif en informatique est la correspondance des fichiers pour les commandes Shell. MorphOS utilise bien sûr la correspondance de motif dans son Shell, mais celle-ci est également utilisée dans les requêtes de fichiers. De nombreuses applications utilisent la correspondance de motif pour filtrer les informations affichées aux utilisateurs. Par exemple, Snoopium et MediaLogger filtrent les noms des processus en fonction des motifs spécifiés par l'utilisateur.

MorphOS utilise sa propre notation de motif, héritée d'AmigaOS. Bien qu'elle ne soit pas aussi puissante que les expressions régulières Unix, elle est plus facile à lire et à comprendre. D'autre part, la correspondance de motif sur MorphOS est plus flexible que les caractères de remplacement. Voici un exemple :

delete "the #? - #?come#?.(mp3|aiff|wav)"

Cette commande supprimera tous les fichiers avec l'extension "mp3", "aiff" ou "wav", commençant par "the" et ayant la chaîne "come" (en tant que mot ou partie du mot) n'importe où après un trait d'union entouré d'espaces. Bien que cet exemple puisse sembler compliqué à première vue, il montre la puissance de la correspondance de motif sur MorphOS. Et ceci vous semblera propre et compréhensible après la lecture de la suite de cet article. Pour le moment, déclarons que tout le motif a été placé entre guillemets car il contient des espaces.

Notation
  • "?" (point d'interrogation) - correspond à un et seulement un caractère. Par exemple "????" correspond à toutes les chaînes de quatre caractères. "t??" correspond à toutes les chaînes de trois caractères commençant par "t".

  • "#" (dièse) - c'est un opérateur de répétition. Il correspond à l'expression placée sur le côté droit, répétée zéro ou plusieurs fois. Par exemple "#a" correspond à n'importe quel nombre de lettres "a", mais correspond aussi à une chaîne vide. Pour correspondre à au moins un "a", le motif doit être noté "a#a". Un motif très commun "#?" correspond à n'importe quelle chaîne, donc "delete #?" est un équivalent du "rm *" rencontré sous Unix.

  • "()" (parenthèses) - est utilisé pour changer la priorité pour les autres opérateurs, comme en mathématiques. Par exemple, un "a#?a" correspond à n'importe quelle chaîne commençant et se terminant par "a", mais un "a#(?a)" correspond à n'importe quelle chaîne dans laquelle chaque caractère impair est "a", et chaque caractère pair est n'importe quoi d'autre. D'autres exemples peuvent être trouvés ci-dessous dans la partie "Exemples" de cet article.

  • "|" (barre verticale) - signifie l'alternative. Par exemple, "(a|b)#?" correspond à toute chaîne commençant par "a" ou "b". "#?(cat|dog)" correspond à n'importe quelle chaîne se terminant par "cat" ou "dog". Un exemple typique est la correspondance d'un ensemble d'extensions de fichiers comme dans l'exemple d'introduction. Un exemple encore plus simple est le suivant : "#?.(txt|doc|rtf)" correspond aux noms terminés par l'une des trois extensions de document.

  • "~" (tilde) - signifie la négation, peut être interprété comme "tout sauf" l'expression placée à droite. Par exemple "~a#?" correspond à toutes les chaînes ne commençant pas par "a". De même, "~(foo)#?" correspond à toutes les chaînes ne commençant pas par "foo". Notez l'utilisation des parenthèses, sans elles "~foo#?" correspondrait à toutes les chaînes ne commençant pas par "f", mais ayant "o" en tant que deuxième et troisième caractère.

  • "%" (signe de pourcentage) - rarement utilisé, correspond à une chaîne vide.

  • "'" (guillemet simple) - c'est le caractère d'échappement. Le caractère spécial suivant après celui-ci est traité comme un caractère ordinaire. Par exemple "#?'|#?" correspond à toutes les chaînes contenant une barre verticale. "'##?" correspond à toutes les chaînes commençant par dièse. Notez bien que l'utilisation de caractère spéciaux de correspondance de motif dans les noms de fichiers est fortement déconseillée et n'entraîne que des problèmes. La possibilité d'échappement est cependant utile pour la correspondance générale de motif, sans rapport avec le Shell et les fichiers.

  • "[]" (crochets) - ils sont utilisés pour indiquer un ensemble ou une plage de caractères. Un ensemble est spécifié simplement en écrivant tous ses caractères. Une plage est spécifiée avec un trait d'union. Par exemple, "[AEIOUY]" signifie "tout caractère A, E, I, O, U et Y". "[A-F]" signifie "tout caractère A, B, C, D, E et F]. Un tilde utilisé entre crochets annule toute la classe, donc "[~EF]" signifie "tout caractère sauf E et F].
Exemples

"???#?" correspond à toutes les chaînes ayant au moins trois caractères.

"~(???#?)" correspond à toutes les chaînes ayant moins de trois caractères..

"#[0-9]" correspond uniquement aux nombres.

"[1-9]#[0-9]", comme ci-dessus, mais les nombres précédés de zéro ne sont pas autorisés.

"#([0-9]|[A-F]|[a-f])" correspond aux nombres hexadécimaux écrits avec des lettres minuscules ou majuscules.

"[0123][0-9](.|-)[01][0-9](.|-)[0-9][0-9][0-9][0-9]" correspond à la date au format européen (deux chiffres pour le jour, deux chiffres pour le mois et quatre chiffres pour l'année), avec des points ou des tirets utilisés comme séparateurs.


[Retour en haut] / [Retour aux articles]