40 votes

Les expressions régulières sont-elles indispensables à la programmation ?

Les expressions régulières sont-elles indispensables pour faire de la programmation ?

88voto

UnkwnTech Points 21942

On peut facilement s'en passer mais il faut (IMHO) en connaître les bases, pour deux raisons.
1) Il peut arriver que RegEx soit la meilleure solution au problème posé (voir l'image ci-dessous).
2) Lorsque vous voyez une Regex dans le code de quelqu'un d'autre, cela ne devrait pas être 100% mystique.

preg_match('/summarycount">.*?([,\d]+)<\/div>.*?Reputation/s', $page, $rep);

Ce code est assez simple, mais si vous ne connaissez pas RegEx, alors ce qui se trouve dans le premier paramètre pourrait aussi bien être un langage martien. Le RegEx qui est utilisé ici est en fait assez simple une fois que vous avez appris les bases, et pour vous permettre d'y arriver, allez sur http://www.regular-expressions.info/ Ils ont BEAUCOUP d'informations sur RegEx et ses diverses implémentations sur les différentes plateformes/langues. Ils ont également un excellent tutoriel pour commencer. Après cela, consultez RegexBuddy Il peut vous aider à construire des RegEx et, pendant que vous les construisez, si vous observez ce qu'il fait, il peut vous aider à vous alléger. C'est de loin le meilleur 39,95 $ que j'ai jamais dépensé.


Original Comic

45voto

Chris Huang-Leaver Points 2880

Oui. Vous pouvez vous en passer, mais vous devriez vraiment apprendre au moins les bases, car la plupart des tâches informatiques pourraient les utiliser. Vous vous épargnerez beaucoup de peine et de tracas à long terme. Les Regex sont beaucoup plus faciles que vous ne le pensez, une fois que vous avez dépassé le stade initial du "wtf".

26voto

Dave Webb Points 90034

Je dirais que non, ils ne sont pas indispensables. Vous pouvez être un très bon programmeur sans les connaître.

Je trouve que j'utilise les Expressions Régulières principalement pour des tâches ponctuelles de manipulation de données plutôt que pour mettre en place du code d'application. Elles peuvent être pratiques pour valider les données d'entrée, mais de nos jours, les contrôles le font souvent pour vous.

17voto

Guffa Points 308133

Pas du tout. Tout ce que vous pouvez faire avec des expressions régulières est tout à fait possible sans elles.

Cependant, il s'agit d'un puissant système de correspondance des motifs, de sorte que certaines choses qui sont assez faciles à accomplir avec un simple motif d'expression régulière nécessitent beaucoup de code pour être réalisées sans lui.

Par exemple, ceci :

s = Regex.Replace(s, "[bcdfghjklmnpqrstvwxz]", "$1o$1");

nécessite un peu plus de code pour faire sans expression régulière :

StringBuilder b = new StringBuilder();
foreach (char c in s) {
   if ("bcdfghjklmnpqrstvwxz".IndexOf(c) != -1) {
      b.Append(c).Append('o').Append(c);
   } else {
      b.Append(c);
   }
}
s = b.ToString();

Ou si vous n'êtes pas un programmeur aussi expérimenté, vous pourriez facilement créer quelque chose qui est encore plus codé et qui fonctionne horriblement mal :

string temp = "";
for (int i = 0; i < s.Length; i++ ) {
   if (
      s[i] == 'b' || s[i] == 'c' || s[i] == 'd' ||
      s[i] == 'f' || s[i] == 'g' || s[i] == 'h' ||
      s[i] == 'j' || s[i] == 'k' || s[i] == 'l' ||
      s[i] == 'm' || s[i] == 'n' || s[i] == 'p' ||
      s[i] == 'q' || s[i] == 'r' || s[i] == 's' ||
      s[i] == 't' || s[i] == 'v' || s[i] == 'w' ||
      s[i] == 'x' || s[i] == 'z'
   ) {
      temp += s.Substring(i, 1);
      temp += "o";
      temp += s.Substring(i, 1);
   } else {
      temp += s.Substring(i, 1);
   }
}
s = temp;

10voto

aleemb Points 12138

Permettez-moi de vous dire que si vous avez des expressions régulières dans votre boîte à outils, vous vous épargnerez beaucoup de temps et d'énergie. Si vous ne les avez pas, vous ne saurez pas ce qui vous manque et vous serez quand même content.

En tant que développeur web, je les utilise très souvent (validation des entrées, extraction de données d'un site, etc.)

EDIT : J'ai réalisé que cela pourrait vous aider de regarder certains problèmes courants pour lesquels les regex sont utilisés en regardant le fichier balise regex ici même sur stackoverflow.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X