regex Python

En tant que nouveau développeur, les expressions régulières (ou expressions régulières comme " s communément connu), peut être intimidant en raison de l’étrange, la syntaxe ne connaissent pas: & nbsp; & nbsp; & nbsp;

Quand j’étais un nouveau développeur et vu l’expression ci-dessus pour la première fois, je me souviens de ma première pensée a été " dire quoi? I " m ne va jamais être en mesure d’apprendre que charabia. Ce " s trop pour moi. Je peux " t le faire ".

Mais vous pouvez! It " est juste une question d’obtenir plus de ce sentiment initial écrasante que les expressions régulières sont trop étrangères. Tout comme l’apprentissage ou de parler une langue étrangère et mdash; une fois que vous obtenez le coup de lui, il viendra assez naturellement. Je promets!

Dans cet article, nous examinons ce que les expressions régulières sont, pourquoi ils sont utilisés, et comment les utiliser en Python. Au moment o√π vous avez terminé cet article, vous et rsquo; aurez une bonne compréhension des expressions régulières de sorte que vous pouvez interpréter ce que l’expression ci-dessus signifie

Quelles sont les expressions régulières & nbsp;!

nous jeter un oeil à ce que l’expression régulière est, nous devons nous rappeler ce qu’est une chaaîne est. Rappelez-vous qu’une chaaîne est juste une collection de caractères qui sont enfilées et délimité par un ensemble de guillemets:

 & ldquo ; Bonjour tout le monde et rdquo; & Ldquo; 555-555-5555 " & Nbsp; & nbsp; & nbsp; " John Doe 123 Main St. Partout, √âtats-Unis 99999-9999 " & Nbsp; & nbsp; " [email protected]‚" 

Ce sont tous des exemples de chaaînes. Ils peuvent être d’une longueur quelconque, ou pas du tout longueur. Les expressions régulières, ou plus souvent raccourcies regex , est une expression dont les composantes correspondent des modèles haut avec des chaaînes pour trouver une sorte d’information.

81% des participants ont déclaré ils se sentaient plus confiants au sujet de leurs perspectives d’emploi technologie après avoir assisté à un bootcamp. . √ätre adapté à un bootcamp aujourd’hui

La bootcamp moyenne grad a passé moins de six mois en transition de carrière, de démarrer un bootcamp à trouver leur premier emploi

Qu’est-ce que ". S grand sur regex est qu’il doesn " SOIGNENT nécessairement la langue que vous codez dans & mdash; it " s assez agnostique de la langue. La différence est dans la langue et rsquo; s les méthodes et la façon d’effectuer des actions en utilisant ces expressions & nbsp;.

Que sont les expressions régulières utilisées pour

Regex est un modèle que nous voulons? regarder spécifiquement dans une chaaîne. Nous pouvons utiliser regex pour rechercher une expression particulière ou un motif pour le remplacer par quelque chose d’autre, ou nous pouvons valider des formulaires pour être certain qu’un utilisateur est saisie d’informations dans un certain format afin qu’il soit conforme à tous les utilisateurs. <

h4> Rechercher et remplacer

Disons, par exemple, nous avons un numéro de téléphone présenté dans ce format:

 555 555 5555 

Ceci est un format valide pour un numéro de téléphone aux √âtats-Unis. Mais si nous voulions remplacer les espaces par des tirets? Vous pouvez également ajouter des parenthèses autour du code régional et un tableau de bord pour le rendre plus lisible?

On peut utiliser des expressions régulières pour cela! Nous " allons passer en revue dans la section suivante comment faire avec Python & mdash; pour l’instant je veux que vous l’idée générale de ce que vous pouvez faire avec des expressions régulières et comment ils peuvent être utiles.

Le résultat que nous verrions après une recherche et de remplacement sur un numéro de téléphone Python pour le format que nous aimerions utiliser serait:

Il n’y a pas besoin de hardcode ou l’apparence d’une valeur spécifique ou de l’indice de la chaaîne dans les expressions régulières parce que nous pouvons simplement chercher les modèles dans les cordes et de manipuler tous les dossiers que nous devons correspondre.

Valider

Avez-vous déjà rempli quelque chose sur un site seulement pour elle à l’affichage un message d’erreur en raison d’un symbole manqué ou un motif que vous didn " suivi de t? Plus que des expressions régulières susceptibles ont été utilisés pour vous assurer que votre entrée correspond ce que leur base de données est à la recherche.

Ceci est appelé validation et est super formes utiles lors de la construction d’être certain qu’un numéro de téléphone suit le le format que vous " d comme pour qu’il soit ou qu’une adresse e-mail est une adresse e-mail correctement formaté, ou un mot de passe correspond aux paramètres que vous avez définis pour qu’il soit un mot de passe valide (longueur, caractères spéciaux, chiffres, majuscules ou petit boaîtier , etc.) & nbsp;.

Cela permet d’éviter des erreurs dans votre base de données en alertant l’utilisateur de motifs ou fautes de frappe Mismatched & nbsp;.

dans la section suivante, nous allons jeter un regard sur les composants ou matchers motif qui construisent des expressions régulières.

Types de Regex sur motif

caractères littéraux, métacaractères, et quantificateurs faire les types de matchers motif que nous voyons dans regex. Un motif matcher est un caractère qui est utilisé pour aider à trouver un motif dans une chaaîne. Il est le principal bloc de construction d’une expression régulière.

Caractères littéraux

L’exemple le plus élémentaire d’un matcher motif en est regex un caractère littéral. Il correspond à un caractère codé en dur ou une chaaîne

Exemples:. & Nbsp;

bonjour & rarr; collection de cinq caractères distincts.

Quand un motif regex est appliqué ici, il semble pour chacun de ces personnages successivement. & Ldquo; bonjour & rdquo ;, " & rdquo ;, helloing ou " helloed " passerait une vérification de modèle, mais " & rdquo ;, Bonjour " & rdquo ;, HELO ou " BONJOUR " ne serait pas.

"Carrière Karma est entré dans ma vie quand j’avais le plus besoin et m’a aidé rapidement match avec un bootcamp. Deux mois après avoir terminé, j’ai trouvé mon travail de rêve aligné avec mes valeurs et objectifs dans la vie "

Vénus, ingénieur logiciel chez Rockbot

A & rarr!; collection d’un caractère distinct.

Parce que les regards regex pour les caractères distincts, il est trop sensible cas. So " A " passerait, mais " un " ne serait pas. Nous " allons entrer dans ce plus un peu & nbsp;.

Une phrase simple . & Rarr; collection de plusieurs caractères distincts.

Regex regards pour tous les caractères de l’expression successivement quand il regarde une chaaîne. Si " une phrase simple et rdquo; est pas dans la chaaîne recherchée exactement comme il est écrit dans l’expression régulière, il ne passerait pas.

Caractères d’échappement

Jetez un oeil à l’exemple précédent. Notez qu’il ya un devant de la période. Un point dans la syntaxe d’expression régulière est synonyme de mots-clés dans des langues comme JavaScript ou Python

Vous pouvez ". T utiliser une période / point sur son propre si vous voulez faire partie d’un motif dans expressions régulières. Vous devez échapper au caractère pour que le moteur d’expression régulière à interpréter comme une représentation littérale d’une période au lieu du sens regex & nbsp;.

Voici quelques autres séquences spéciales de caractères besoin d’être échappé si vous voulez que le caractère littéral au lieu de traduire ce qui signifie que le moteur de regex il compile à.

  • Asterisk *
  • Backslash /
  • plus +
  • Caret ^
  • Symbole du dollar $
  • Dot / Période
  • tuyau |.
  • question Mark
  • parenthèses & ndash?; Les deux types ()
  • Spirales Accolades & ndash; Les deux types {}

Caractères littéraux en match regex exactement avec le caractère que vous incluez dans le cadre du modèle. Si vous souhaitez inclure un caractère et rsquo; s énumérés ci-dessus, assurez-vous d’y échapper pour qu’il puisse aussi être une partie de votre regex

Common Matchers

Le but d’un. matcher est de faire correspondre plusieurs lettres dans un motif. Cette collection de symboles de correspondance de motif est assez cohérent entre les langages de programmation que l’utilisation regex.

matcher description de Exemple
. tout caractère nw correspondrait maintenant, Naw ou nouvelle , etc. Tout caractère passe le test
^ regex pour modèle à Looks au début de la ligne ^ bonjour correspondrait bonjour en ligne qui a commencé avec ce modèle
regex $ Looks pour modèle à la fin de la ligne $ mondiale serait monde correspondre à une ligne qui a pris fin avec ce modèle
[abc] Matchs a, b, ou c & nbsp; [misp] est considéré comme un ensemble et correspondrait à une chaaîne qui a l’un de ces caractères dans ce & nbsp;.
Par exemple, il pourrait correspondre à toutes les lettres individuelles dans mississippi, et de manquer, mais seulement quelques-unes des lettres dans le marais et missouri
[abc] [xyz] Matc hes a, b, ou c suivi par x, y ou z / [mm] [sip] / correspondrait à une chaaîne qui commence par M ou m, suivie d’un ensemble qui présente l’un des caractères [SIP]
[^ abc] Non a, b, ou c [^ rstlne] correspondraient tout caractère qui ne sont pas r, s, t, l, n, ou e
[a-zA-Z0-9] Correspond à tout caractère dans la plage [un] serait correspond à tout caractère entre a et n. et, à la fin, aveugle, peut , tous ont des caractères qui correspondent tout à fait ici
A | B A ou B m | m. correspondrait à un mot ou une phrase au moins deux caractères de longueur qui correspond soit à un M ou un m plus au moins un ou plusieurs autres caractères.
CAT Matches C, suivi par A, suivi par T Bonjour tout le monde égalerait Bonjour tout le monde exactement

métacaractères

Les expressions régulières utilisent également métacaractères pour décrire un modèle. Métacaractères ont une sorte de sens derrière eux et décriront la forme du motif.

Remarque : lettre capital métacaractères (W, D, etc.) correspond en général à l’opposé de ce que la lettre minuscule métacaractères do (w, d, etc.) & nbsp;.

quantificateurs

métacaractère description de Exemple
d ne importe quel chiffre d correspondrait à 1, 2 ou 3, etc. sténographie pour [0-9]
D ne importe quel caractère non chiffres D correspondrait A, B, g, etc .. pour sténographie [^ 0-9] & nbsp;
s Matchs les espaces blancs caractère s correspondrait à de nouvelles lignes, des onglets, des espaces, etc. & nbsp;
s Matchs non une caractère -whitespace & nbsp; S ne correspond à aucun caractère sauf un caractère des espaces & nbsp;.
w correspond à tout caractère de mot un caractère de mot, abréviation de [a-zA-z_0-9]
W tout caractère non-mot [W] ne correspond à aucun des caractères spéciaux. Sténographie pour [^ w]

Utiliser les quantificateurs, métacaractères, et d’autres Matchers comme les blocs de construction pour vos expressions régulières. La syntaxe mentionnée ici est similaire dans plusieurs langues qui utilisent des expressions régulières

Cependant, il y a certaines choses qui sont utilisées dans Ruby ou JavaScript, par exemple, ce ne serait pas transférable à Python

Let ". s apprendre un peu plus sur la façon dont les expressions régulières en Python dans la section suivante.

Comment fonctionnent les expressions régulières en Python?

Pour utiliser des expressions régulières en Python importer le re module dans le haut de votre fichier & nbsp;.

" aussi simple que cela! Il est spécial vous rien avoir à ajouter ou paquets, vous devez télécharger. It " s déjà intégré aussi longtemps que vous importez & nbsp;.

Le plaisir vient de la façon d’utiliser les différentes méthodes qui sont disponibles pour nous dans le module re .

re.search (regex, str, drapeaux = 0)

Utilisez la fonction de recherche lorsque vous souhaitez appliquer un motif regex à une chaaîne pour voir si le motif est contenue dans la chaaîne. Cette méthode prendra un modèle d’expression régulière et correspondre partout dans la chaaîne.

Si le motif regex ne figure pas dans la chaaîne, l’interprète retourne Aucun . S’il y a un match, un match sera de retour qui contiendra des informations à ce sujet & nbsp;.

match a une propriété et deux méthodes peuvent être utilisées pour récupérer des informations sur le match:

match_obj.span () une méthode qui retourne un tuple contenant les positions de début et de fin de la partie (extrémité la position est inclus).

match_obj.string une propriété qui renvoie la chaaîne passée dans la fonction.

match_obj.group () une méthode qui renvoie la partie de la chaaîne o√π il y avait un match.

match_obj ici sera remplacé par la variable que vous attribuez au résultat de votre re .search () méthode . Voici un exemple en utilisant les méthodes et propriétés: & nbsp;

la principale chose à retenir ici est que le match en Python a des méthodes et & nbsp; propriétés

Nous utilisons la chaaîne de propriété pour accéder à la chaaîne d’origine, nous avons testé la regex contre, la méthode de la durée d’accès à l’indexe, et la méthode de groupe pour obtenir le résultat apparié réelle & nbsp;.. < br>

Il existe d’autres méthodes et propriétés qui peuvent être référencées dans la documentation Python, mais ceux-ci sont bons pour vous aider à démarrer & nbsp;

les arguments optionnels:. & nbsp; drapeaux

Il y a un argument optionnel, vous pouvez utiliser avec le re Module " s méthode de recherche aussi bien. Pour utiliser les assigner drapeaux paramètres à une liste des drapeaux que vous souhaitez utiliser. La valeur par défaut est réglé sur 0. Certaines des options les plus populaires comprennent: & nbsp;

  • re.DEBUG

Cet indicateur affiche les informations de débogage sur le regex compilé en cas de besoin & nbsp;.

  • re.I
    re.IGNORECASE

insensible à la casse correspondant. Cela ignorera le cas des caractères passés dans des ensembles ou des caractères littéraux de sorte que les deux lettres et de capitalistique cas Lower- correspondront.

  • RE.M
    re.MULTILINE < / li>

Mode multiligne. Permet au début de la ligne et à la fin de la ligne métacaractères de regex à utiliser dans les chaaînes multilignes. Sinon, il suffit de regarder le début et la fin de la chaaîne. Sans le drapeau multiligne, le moteur regex considère la ligne de chaaîne d’un.

  • re.S
    re.DOTALL

Ce drapeau indique le moteur de regex que le caractère de point correspondra à tout caractère. Le comportement par défaut est le caractère point pour correspondre à tous les caractères sauf un caractère de nouvelle ligne & nbsp;.

  • re.X
    re.VERBOSE

Le bavard indicateur vous permet d’ajouter des commentaires à votre expression régulière pour briser votre expression et commenter son but Cela peut aider énormément que vous apprenez regex en Python & nbsp;..

Cet extrait de code prend l’exemple ci-dessus et intègre quelques-uns des indicateurs mentionnés ci-dessus Lorsque vous utilisez plus d’un drapeau, utilisez le séparateur |. opérateur entre chaque comme séparateur

Prenez le temps de remarquer comment les drapeaux nous aider à tester notre chaaîne. Essayez de prendre les drapeaux du paramètre out. Est-ce que la chaaîne un résultat? Sinon, qu’est-ce que ce retour à la suite & nbsp;?

Rappelez-vous que la méthode de recherche sur le module re prend la regex, la chaaîne à rechercher, et un paramètre flags en option. Une valeur truthy retourne un objet match qui a des propriétés et des méthodes qui y sont associées. Une valeur revient falsy un objet NoneType. & Nbsp;

re.match (regex, str, drapeaux = 0)

Utiliser les & nbsp; correspondre méthode lorsque vous cherchez à correspondre à un modèle de regex au début de la chaaîne. Si vous voulez correspondre au modèle de regex partout dans la chaaîne, utilisez la méthode de recherche ci-dessus au lieu & nbsp;.

Quand on regarde ce code dans un interpréteur Python, vous verrez que la première méthode, match () , ne renvoie pas match , mais Aucun . La seconde permet de regarder à l’intérieur de la chaaîne et renvoie un match . En effet, la méthode match () ne regarde que le début d’une chaaîne, même si le re.MULTILINE drapeau est levé & nbsp;.

re.sub (findRegex, replaceWith, str, count = 0, drapeaux = 0) méthode

sub () dans le module de re prend regex, trouve le plus à gauche correspondance dans une chaaîne, et le remplace par autre chose. Il répète la même opération pour le nombre de fois indiqué dans le paramètre de comptage. S’il n’y a pas de paramètre de comptage ou il est mis à zéro, toutes les occurrences seront remplacées & nbsp;.

Au début de cet article, nous avons parlé de reformater un numéro de téléphone. Que " s jeter un oeil à la façon de le faire ici: & nbsp;

Cela prend notre chaaîne de téléphone, trouve tous occurrences d’espaces, et le remplace par un tiret. Dans ce cas, nous nous retrouvons avec 555-555-5555

Let " s essayer un reformatage plus difficile.

cet exemple, nous allons au début de la ligne pour ajouter une parenthèse ouverte et assign cette nouvelle chaaîne à une variable & nbsp;.

nous prenons alors cette variable nouvellement affecté ( left_parens ) et l’utiliser pour effectuer la même opération sur la recherche du prochain caractère des espaces disponibles pour le remplacer par une parenthèse près. Ceci est attribué à right_parens & nbsp;.

Enfin, nous prenons le right_parens variable et l’utiliser pour effectuer la même opération sur le caractère des espaces final le remplacer par un tableau de bord & nbsp;.

Cela nous donnera (555) 555-5555 & nbsp;.

Pour rappel, le sous () méthode prend dans un modèle de regex, une chaaîne de remplacement ou de la fonction, la chaaîne réelle que nous voulons effectuer le sous () sur, et un compte. Si nous don " t fournir un compte, il effectuera les remplacements sur toutes les occurrences. Il retourne la nouvelle chaaîne avec les substitutions effectuées & nbsp;.

Conclusion

Les expressions régulières sont un moyen de données de valider ou de rechercher et remplacer des caractères dans nos cordes. Regex se compose de métacaractères, quantificateurs, et les caractères littéraux qui peuvent être utilisés pour tester nos cordes pour voir si elle passe un test de validation ou de rechercher et remplacer Correspondances & nbsp;.

Regex peut être un peu écrasante au premier abord, mais une fois que vous l’obtenez, il ". sa peu comme faire du vélo & nbsp; It " ll être à l’arrière de votre mémoire et super facile à reprendre

Quand vous sentez que vous avez une poignée sur ce qui arrive dans cet article, jetez un oeil à la documentation Python. pour voir ce qui peut être fait d’autre avec des expressions régulières. vraiment regarder les méthodes de compilation et fractionnés & nbsp;.

Bonne regexing !

Quantifier description de Exemple
+ une ou plusieurs des précédentes caractère d + correspondrait à deux ou plusieurs chiffres
* zéro ou plusieurs des précédentes caractère . * correspondrait à tout caractère 0 fois & nbsp ou plus;
note: techniquement une chaaîne vide remplirait cette regex
zéro ou l’un des!? caractère précédent a * correspondrait a, tout, bonjour, monde & nbsp;?.
{numéro} Matches précédents caractère exactement nombre de fois & nbsp; d {3} correspond exactement à trois chiffres [0-9]
{num1, num2} Matches précédents caractère dans une gamme de nums d {3,5} correspond 3 à 5 chiffres qui sont [0-9]