Maison >développement back-end >Tutoriel Python >Résumer et organiser les points de connaissance des expressions régulières Python
Cet article vous apporte des connaissances pertinentes sur python, qui présente principalement des problèmes liés aux expressions régulières. Une expression régulière (Regular Expression) est une chaîne, qui peut représenter une information régulière. Jetons un coup d'œil ensemble, je. j'espère que cela sera utile à tout le monde.
Apprentissage recommandé : Tutoriel vidéo Python
L'expression régulière (expression régulière) est une chaîne, elle peut représenter une information régulière. Python est livré avec un module d'expression régulière, grâce auquel vous pouvez rechercher, extraire et remplacer une information régulière. Il est difficile de trouver une personne parmi dix mille personnes, mais il est facile de trouver une personne très « caractéristique » parmi dix mille personnes. Supposons qu'il y ait une personne à la peau verte et mesurant trois mètres. Même si cette personne fait partie de dix mille personnes, d'autres peuvent la trouver d'un seul coup d'œil. Ce processus de « recherche » est appelé « correspondance » dans les expressions régulières. Dans le développement de programmes, si vous souhaitez qu'un programme informatique trouve le contenu requis à partir d'un grand morceau de texte, vous pouvez utiliser des expressions régulières. Les étapes suivantes sont nécessaires pour utiliser les expressions régulières.
(1) Recherchez des modèles.
(2) Utilisez des symboles réguliers pour exprimer les règles.
(3) Extraire les informations.
Un point peut remplacer n'importe quel caractère à l'exception du caractère de nouvelle ligne, y compris mais sans s'y limiter les lettres anglaises, les chiffres, le chinois caractères, signes de ponctuation anglais et signes de ponctuation chinois.
Un astérisque peut représenter une sous-expression devant lui ( caractères ordinaires , un autre ou plusieurs symboles d'expression régulière) 0 fois à l'infini De second ordre.
Tous les éléments ci-dessus sont acceptables : (l'astérisque représente l'expression précédente)
Le point représente tout caractère autre qu'un saut de ligne et l'astérisque indique la correspondance le caractère qui le précède 0 fois ou un certain nombre de fois. Donc ".*" signifie faire correspondre une chaîne de n'importe quelle longueur un certain nombre de fois.
Tous les éléments ci-dessus sont acceptables :
Cela signifie que "n'importe quel nombre de caractères, à l'exception des sauts de ligne", apparaît entre "tel" et "ha".
Le point d'interrogation représente la sous-expression qui la précède 0 fois ou 1 fois. Notez que le point d'interrogation ici est un point d'interrogation anglais
Tous les éléments ci-dessus peuvent être utilisés :
Utilisation après combinaison :
Tous les éléments ci-dessus peuvent être utilisés :
Remarque : La différence entre « .* » et « .* »
. *? Cela signifie faire correspondre la chaîne la plus courte pouvant répondre aux exigences.
Le résumé d’une phrase est le suivant.
① ".*": Mode gourmand, obtenez la chaîne la plus longue qui remplit les conditions.
② ".*? " : Mode non gourmand, obtenez la chaîne la plus courte qui remplit les conditions.
"extraire" une partie du contenu d'une chaîne
Il y a la chaîne suivante :
On peut voir qu'il y a un deux-points anglais sur le côté gauche du mot de passe. ici, et un deux-points anglais sur le côté droit. Il y a un caractère chinois pour « vous ». Lors de la construction d'une expression régulière : .*? Lorsque vous, le résultat sera :
Cependant, les deux points et le caractère chinois « vous » ne font pas partie du mot de passe. Si vous voulez uniquement « 12345abcde », vous devez utiliser des parenthèses :
et obtenir :
.
Dans les expressions régulières, de nombreux symboles ont des significations particulières, telles que les points d'interrogation, les astérisques, les accolades, les crochets et les parenthèses. La barre oblique inverse doit être utilisée conjointement avec d'autres caractères pour transformer les symboles spéciaux en symboles ordinaires et les symboles ordinaires en symboles spéciaux.
« d » est utilisé dans les expressions régulières pour représenter un seul chiffre.
Si vous souhaitez extraire deux nombres, vous pouvez utiliser dd ; si vous souhaitez extraire 3 nombres, vous pouvez utiliser ddd. Mais que se passe-t-il si vous ne savez pas combien de chiffres comporte ce numéro ? Vous devez utiliser le signe * pour représenter un nombre arbitraire.
Tous peuvent être représentés par l'expression régulière suivante :
Le nom du module d'expression régulière de Python est "re", qui est la première lettre de l'abréviation "expression régulière". En Python, vous devez d'abord importer ce module avant de l'utiliser. L'instruction importée est :
import re
Le module d'expression régulière de Python contient une méthode findall, qui peut renvoyer toutes les chaînes qui répondent aux exigences sous la forme d'une list.
Le prototype de fonction de findall est :
re.findall(pattern,string,flags=0)
pattern représente une expression régulière, string représente la chaîne d'origine et flags représente des indicateurs de fonction spéciaux. Le résultat de findall est une liste contenant tous les résultats correspondants. Si aucun résultat ne correspond, une liste vide sera renvoyée.
Lorsque vous devez extraire certains contenus, utilisez des parenthèses pour placer le contenu afin de ne pas obtenir d'informations non pertinentes. Comment revenir s'il contient plusieurs "(.*? )" ? Comme le montre la figure 3-2, ce qui est renvoyé est toujours une liste, mais les éléments de la liste deviennent des tuples. Le premier élément du tuple est le numéro de compte et le deuxième élément est le mot de passe.
Il y a un paramètre flags dans le prototype de la fonction. Ce paramètre peut être omis. Lorsqu'il n'est pas omis, il a certaines fonctions auxiliaires, comme ignorer la casse, ignorer les nouvelles lignes, etc.
Ici, nous prenons l'exemple de l'ignorance des nouvelles lignes pour illustrer. Pour ignorer les nouvelles lignes, vous devez utiliser l'indicateur "re.S".
Bien que le symbole « n » apparaisse dans les résultats correspondants, c'est mieux que de ne rien obtenir du tout. Les sauts de ligne dans le contenu peuvent être remplacés lors du nettoyage ultérieur des données.
L'utilisation de search() est la même que celle de findall(), mais search() ne renverra que la première chaîne qui répond aux exigences. Une fois qu’il trouve quelque chose qui correspond aux exigences, il arrête de chercher. Il est particulièrement utile pour rechercher uniquement les premières données dans un texte très volumineux, ce qui peut grandement améliorer l'efficacité de fonctionnement du programme. Le prototype de fonction de
search() est :
Pour le résultat, si la correspondance est réussie, c'est un objet d'expression régulière ; si aucune donnée ne correspond, c'est Aucune.
Si vous avez besoin d'obtenir le résultat correspondant, vous devez utiliser la méthode .group() pour obtenir la valeur à l'intérieur.
Ce n'est que lorsque le paramètre dans .group() est 1 que le résultat entre parenthèses dans l'expression régulière sera imprimé. Les paramètres de
.group() ne peuvent pas dépasser le nombre maximum de parenthèses dans l'expression régulière. Un paramètre de 1 signifie lire le contenu dans la première parenthèse, un paramètre de 2 signifie lire le contenu dans la deuxième parenthèse, et ainsi de suite.
(Notez que celle sur l'image n'est pas findall)
re.findall() est livrée avec la fonction re.compile(), il n'est donc pas nécessaire d'utiliser re.compile( ).
Là peut être d'autres caractères entre parenthèses.
Voir l'image ci-dessous pour les impacts spécifiques.
S'il y a d'autres caractères ordinaires entre parenthèses, alors ces caractères ordinaires apparaîtront dans les résultats obtenus.
Apprentissage recommandé : Tutoriel vidéo Python
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!