Les expressions régulières sont-elles indispensables pour faire de la programmation ?
Réponses
Trop de publicités?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é.
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".
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.
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;
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.