in

Comment utiliser les expressions régulières de base pour mieux rechercher et gagner du temps

Que vous ayez recherché avec Grep ou que vous ayez recherché des programmes capables de renommer des fichiers par lots pour vous, vous vous êtes probablement demandé s’il existait un moyen plus simple de faire votre travail. Heureusement, il y en a, et cela s’appelle des «expressions régulières».

(Bande dessinée de XKCD.com)

Que sont les expressions régulières?

Les expressions régulières sont des instructions formatées d’une manière très spécifique et qui peuvent représenter de nombreux résultats différents. Aussi connus sous le nom de «regex» ou «regexp», ils sont principalement utilisés dans les fonctions de recherche et de dénomination de fichiers. Une expression régulière peut être utilisée comme une formule pour créer un certain nombre de sorties possibles différentes, qui sont toutes recherchées. Vous pouvez également spécifier comment un groupe de fichiers doit être nommé en spécifiant une expression régulière, et votre logiciel peut passer progressivement à la sortie prévue suivante. De cette façon, vous pouvez renommer plusieurs fichiers dans plusieurs dossiers très facilement et efficacement, et vous pouvez aller au-delà des limites d’un simple système de numérotation.

Étant donné que l’utilisation d’expressions régulières repose sur une syntaxe spéciale, votre programme doit être capable de les lire et de les analyser. De nombreux programmes de renommage de fichiers de commandes pour Windows et OS X prennent en charge les expressions rationnelles, ainsi que l’outil de recherche multiplateforme GREP (que nous avons abordé dans notre guide Bash Scripting for Beginners) et l’outil de ligne de commande Awk pour * Nix. De plus, de nombreux gestionnaires de fichiers, lanceurs et outils de recherche alternatifs les utilisent, et ils occupent une place très importante dans les langages de programmation comme Perl et Ruby. D’autres environnements de développement tels que .NET, Java et Python, ainsi que le prochain C ++ 11, fournissent tous des bibliothèques standard pour l’utilisation d’expressions régulières. Comme vous pouvez l’imaginer, ils peuvent être vraiment utiles lorsque vous essayez de minimiser la quantité de code que vous mettez dans un programme.

Remarque sur les caractères d’échappement

Avant de vous montrer des exemples, nous aimerions souligner quelque chose. Nous allons utiliser le shell bash et la commande grep pour vous montrer comment appliquer des expressions régulières. Le problème est que parfois nous voulons utiliser des caractères spéciaux qui doivent être passés à grep, et le shell bash interprétera ce caractère car le shell l’utilise également. Dans ces circonstances, nous devons «échapper» à ces personnages. Cela peut prêter à confusion car cet «échappement» des caractères se produit également à l’intérieur des expressions rationnelles. Par exemple, si nous voulons entrer ceci dans grep:

<

nous devrons remplacer cela par:

<

Chaque caractère spécial reçoit ici une barre oblique inverse. Vous pouvez également utiliser des guillemets simples:

‘ <'

Les guillemets simples indiquent à bash de NE PAS interpréter ce qu’ils contiennent. Bien que nous ayons besoin de ces étapes pour que nous puissions vous démontrer, vos programmes (en particulier ceux basés sur l’interface graphique) ne nécessitent souvent pas ces étapes supplémentaires. Pour que les choses restent simples et directes, l’expression régulière réelle vous sera donnée sous forme de texte entre guillemets et vous verrez la syntaxe échappée dans les captures d’écran de la ligne de commande.

Comment se développent-ils?

Les expressions régulières sont une manière très concise d’énoncer des termes afin que votre ordinateur puisse les étendre en plusieurs options. Jetons un œil à l’exemple suivant:

à M[0123456789]

Les crochets – [ and ] – dire au moteur d’analyse que tout ce qui se trouve à l’intérieur, n’importe quel caractère UN peut être utilisé pour correspondre. Tout ce qui se trouve à l’intérieur de ces crochets est appelé un jeu de caractères.

Donc, si nous avions une énorme liste d’entrées et que nous utilisions cette expression régulière pour rechercher, les termes suivants seraient mis en correspondance:

etc. Cependant, la liste suivante ne correspondra PAS et n’apparaîtra PAS dans vos résultats:

  • tomate ; l’expression régulière ne tient pas compte des lettres après «tom»
  • À M ; l’expression régulière est sensible à la casse!

Vous pouvez également choisir de rechercher avec un point (.) Qui autorisera la présence de n’importe quel caractère, à condition qu’il y ait un caractère présent.

Comme vous pouvez le voir, grognant avec

.à M

n’a pas évoqué des termes qui n’avaient que «tom» au début. Même les «tomates vertes» sont entrées, car l’espace avant «tom» compte comme un caractère, mais des termes comme «tomF» n’avaient pas de caractère au début et ont donc été ignorés.

Remarque: le comportement par défaut de Grep est de renvoyer une ligne entière de texte lorsqu’une partie correspond à votre expression régulière. D’autres programmes peuvent ne pas le faire, et vous pouvez désactiver cette option dans grep avec l’indicateur «-o».

Vous pouvez également spécifier l’alternance à l’aide d’un tube (|), comme ici:

speciali (s | z) e

Cela permettra de trouver à la fois:

Lors de l’utilisation de la commande grep, nous devons échapper les caractères spéciaux (, | et) avec des barres obliques inverses et utiliser l’indicateur «-E» pour que cela fonctionne et éviter les erreurs laides.

Comme nous l’avons mentionné ci-dessus, c’est parce que nous devons dire au shell bash de transmettre ces caractères à grep et de ne rien faire avec eux. L’indicateur ‘-E’ indique à grep d’utiliser les parenthèses et le tube comme caractères spéciaux.

Vous pouvez effectuer une recherche par exclusion en utilisant un signe d’insertion qui se trouve à la fois entre vos crochets et au début d’un ensemble:

à M[^F|0-9]

Encore une fois, si vous utilisez grep et bash, n’oubliez pas d’échapper à ce tuyau!

Les termes qui figuraient dans la liste mais qui n’apparaissent PAS sont:

Ceux-ci ne correspondaient pas à notre regex.

Comment puis-je utiliser les environnements?

Souvent, nous recherchons en fonction des limites. Parfois, nous voulons uniquement des chaînes qui apparaissent au début d’un mot, à la fin d’un mot ou à la fin d’une ligne de code. Ceci peut être facilement fait en utilisant ce que nous appelons des ancres.

L’utilisation d’un signe d’insertion (en dehors des crochets) vous permet de désigner le «début» d’une ligne.

^ tom

Pour rechercher la fin d’une ligne, utilisez le signe dollar.

tom $

Vous pouvez voir que notre chaîne de recherche vient AVANT l’ancre dans ce cas.

Vous pouvez également pour les correspondances qui apparaissent au début ou à la fin des mots, pas des lignes entières.

tom >

Comme nous l’avons mentionné dans la note au début de cet article, nous devons échapper à ces caractères spéciaux car nous utilisons bash. Vous pouvez également utiliser des guillemets simples:

Les résultats sont les mêmes. Assurez-vous d’utiliser des guillemets simples et non des guillemets doubles.

Autres ressources pour les expressions rationnelles avancées

Nous n’avons atteint que la pointe de l’iceberg ici. Vous pouvez également rechercher des termes monétaires délimités par le marqueur de devise et rechercher au moins trois termes correspondants. Les choses peuvent devenir vraiment compliquées. Si vous souhaitez en savoir plus sur les expressions régulières, veuillez consulter les sources suivantes.

  • Zytrax.com a quelques pages avec des exemples spécifiques des raisons pour lesquelles les choses fonctionnent et ne correspondent pas.
  • Regular-Expressions.info a également un guide de tueur pour beaucoup de choses plus avancées, ainsi qu’une page de référence pratique.
  • Gnu.org a une page dédiée à l’utilisation de regexps avec grep.

Vous pouvez également créer et tester vos expressions régulières à l’aide d’un outil en ligne gratuit basé sur Flash appelé RegExr. Il fonctionne à mesure que vous tapez, est gratuit et peut être utilisé dans la plupart des navigateurs.

Avez-vous une utilisation préférée des expressions régulières? Connaissez-vous un grand renommeur de lots qui les utilise? Peut-être que vous voulez juste vous vanter de votre grep-fu. Donnez votre avis en commentant!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment comprendre la typographie comme un designer professionnel

Comment comprendre la typographie comme un designer professionnel

Comment envoyer des messages texte à l'aide de votre Amazon Echo

Comment envoyer des messages texte à l’aide de votre Amazon Echo