Comment diable puis-je les aborder?
Comme toute nouvelle chose:
10 Study
20 Practice
30 goto 10
Étude
Je trouve que les enseignants les plus performants commencent à enseigner n’importe quel sujet en fournissant d’abord un peu d’arrière-plan. Il est important d’avoir un contexte de ce que vous apprenez et, plus important encore, pourquoi vous l’apprenez.
C'est tout correspondance de chaîne
Les expressions régulières sont un moyen de faire correspondre les modèles dans le texte. C'est un langage déclaratif lui-même intégré à de nombreux autres langages de programmation.
Je voudrais souligner que c'est un langage déclaratif, les expressions régulières sont utiles pour exprimer ce que la chaîne de match, mais ils n'exprime en aucune manière comment le programme est d'aller à faire la mise en correspondance. Pour cette raison, il est possible d'utiliser des expressions régulières très rapidement et très lentement dans le même langage de programmation en utilisant simplement un analyseur syntaxique différent.
La raison de la création d'expressions régulières est la même pour la création de la plupart des langages de programmation: les programmeurs se sont retrouvés à exécuter la même tâche compliquée encore et encore et ont décidé qu'ils souhaitaient une manière plus simple d'écrire le code.
Certains vont (et devraient) se plaindre de ma phrase précédente en disant quelque chose comme:
RegEx ne rend pas un programme plus simple.
c'est vrai
RegEx ne simplifie pas un programme, RegEx simplifie son écriture . Vous devez toujours faire des tests approfondis pour vous assurer que tous les cas corrects correspondent correctement et que tous les cas incorrects ne le sont pas. C'est vraiment difficile de tester "tout", et avec des modèles compliqués, c'est vraiment difficile de tester "la plupart". Dans le pire des cas, vous devriez toujours tester "certains" cas.
incorporons quelques exemples J'ai obligatoirement choisi le moteur RegEx de JavaScript car je peux le tester en direct dans le navigateur et parce que je n'aurai pas à échapper de chaîne en utilisant des littéraux RegEx.
Lorsque vous effectuez une correspondance de chaîne normale, vous testez une valeur de chaîne par rapport à une autre. Ils peuvent venir de n’importe où, mais au final, il faut comparer deux chaînes:
if ( 'foo' == 'bar' ) doSomething();
Cet exemple est nul parce qu'il ne sera jamais faire quoi que ce soit
if ( foo == 'bar' ) doSomething();
Beaucoup mieux; maintenant, nous ne savons pas à l'avance si quelque chose sera fait ou non. Nous pouvons maintenant commencer à accepter les entrées de l'utilisateur:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
Merveilleux, les utilisateurs peuvent maintenant entrer bar
et quelque chose va se passer, jusqu'à ce que vous obteniez des rapports de bugs indiquant que cela "bar"
ne fonctionne pas, ou que "BAR" ne fonctionne pas, ou qu'ils ont tapé BRA
100 fois sans que rien ne se passe.
En ignorant les fautes d'orthographe et les caractères supplémentaires, les 'bar' != 'BAR'
programmeurs doivent trouver un moyen de rechercher les cas où les caractères sont incorrects.
Solution simple, utilisez toLowerCase
. Cela fonctionne à merveille, mais qu'en est-il de nos utilisateurs qui utilisent l'anglais britannique par rapport à l'anglais américain quand vous leur faites correspondre something == 'color'
? Maintenant, vous devrez faire correspondre something == 'color' || somthing == 'colour'
.
Longue histoire courte, les modèles simples se transforment très rapidement en beaucoup de code répétitif.
L’exemple de couleur peut simplement être associé à:
/colou?r/.test( something )
une solide compréhension des bases des expressions régulières peut réduire considérablement le temps que vous perdez à réinventer la roue.
Où étudier
La plupart des langues qui implémentent des expressions régulières ont au moins une ressource disponible pour la syntaxe spécifique consistant à utiliser des expressions régulières dans cette langue. Un pour JavaScript peut être trouvé sur MDN
lis le.
tout.
puis relisez-le.
Il faut du temps pour apprendre, considérez-le comme un investissement: une heure pour apprendre RegEx économise désormais une heure la prochaine fois que vous devez effectuer une recherche de motif de chaîne, puis une autre heure la prochaine fois.
Entraine toi
Après avoir tout lu sur RegEx, vous ne comprendrez probablement pas l'essentiel. C'est parce que vous ne faites rien avec cela.
J'ai mentionné pourquoi j'ai choisi JS pour cet exemple, je vous exhorte à le manipuler dans votre navigateur. C'est rapide et vous pouvez le faire directement dans votre barre d'URL.
JS a quelques façons simples et différentes d’utiliser RegEx:
string.match( regex )
regex.exec( string )
regex.test( string )
Commençant par quelque chose de simple comme:
javascript:'color'.match(/colou?r/);
est un moyen facile de mettre un pied dans la porte. Jouez avec, casser le voir ce qui correspond, et ce qui ne fonctionne pas.
Continuez quand vous êtes coincé dans la pratique 30
. Vous devez lire pour en apprendre davantage, mais vous devez vous exercer pour bien comprendre ce que vous avez appris.