Explication du module d'expression régulière Python -re

Le
concept d'
expressions régulières En tant que concept de l'informatique, les expressions régulières sont généralement utilisées pour récupérer et remplacer du texte qui répond à une certaine règle. L'expression régulière est une sorte de formule logique pour la manipulation de chaînes, qui utilise des chaînes de règles prédéfinies pour filtrer et traiter les chaînes de manière logique.

L'expression régulière est essentiellement un petit langage de programmation hautement spécialisé. En Python, les expressions régulières sont implémentées via le module re. Les expressions régulières peuvent d'abord spécifier des règles pour l'ensemble correspondant de chaînes correspondantes, puis modifier ou séparer les chaînes d'une manière ou d'une autre via le module re.

Le modèle d'expression régulière est d'abord compilé en une série de bytecodes, puis exécuté par le moteur de correspondance écrit en langage C, donc dans une certaine mesure, il est plus rapide que d'écrire directement du code de traitement de chaîne Python. Mais toutes les correspondances de chaînes ne peuvent pas être effectuées avec des expressions régulières. Même si elle peut gérer des expressions uniques, cela devient très compliqué et peu lisible. Il est recommandé d'écrire directement du code Python.

Composition
Les expressions régulières sont composées de deux types de caractères, l'un est des métacaractères avec une signification particulière dans les expressions régulières et l'autre est des
caractères ordinaires .

Caractères et syntaxe:

Syntaxe Description Exemple d'expression Exemple de correspondance
Caractère commun Correspond à lui-même Abc abc
. Correspond à n'importe quel caractère sauf newline \ n ac abc
\ caractère d'échappement a \ .c ac
[abcd] Correspond à a ou b ou c ou d [abc] a
[0-9] correspond à n'importe quel nombre de 0 à 9, ce qui équivaut à [0123456789] [0-3] 1
[\ u4e00- \ u9fa5] correspond à n'importe quel caractère chinois [\ u4e00- \ u9fa5] chinois
[^ a0 =] correspond à un caractère quelconque autre que, 0, = [^ abc] d
[^ az] correspond à n'importe quel caractère sauf les minuscules [^ az] A
\ d correspond à n'importe quel chiffre, équivalent à [0-9] a \ dc a6c
\ D correspond à tout A non- caractère numérique, équivalent à [^ 0-9] a \ Dc abc
\ s correspondant à n'importe quel caractère vide, équivalent à [\ r \ n \ f \ t \ v] a \ sc ac
\ S correspondant à n'importe quel caractère non vide, équivalent à [^ \ r \ n \ f \ t \ v] a \ Sc aYc
\ w correspond à n'importe quelle lettre, chiffre ou trait de soulignement, équivalent à [a-zA-Z0-9_] a \ wc a_c
\ W correspond à n'importe quel autre Pas un lettre, chiffre ou trait de soulignement, équivalent à [^ a-zA-Z0-9_] a \ wc a * c
* Correspond au caractère précédent 0 fois ou un nombre illimité de fois a * c c
+ Correspond au caractère précédent 1 fois ou un nombre illimité de fois a + c aaaac
? Correspond au caractère précédent 0 ou 1 fois a? C ac
{m} Correspond au caractère précédent m fois a {3} c aaac
{m, n} Avant de faire correspondre A caractère m à n fois, mn peut être omis. La valeur par défaut de mn est respectivement 0 fois et nombre illimité de fois. a {1,2} c aac
^ correspond au début de la chaîne, ne correspond à aucun caractère ^ abc abc
$ correspond la fin de la chaîne Position, ne correspond à aucun caractère abc $ abc
| Sous-expression ou relation correspondant abc | def def
(…) Matching group (abc) {2} abcabc
(? P <name>…) Matching group, spécifiez en plus du numéro d'origine Un alias supplémentaire (? P <id> abc) {2) abcabc
\ <number> correspond au groupe avec le numéro de référence <number> dans la chaîne (\ d) abc \ 1 1abc1
(? ..) correspond au non groupé (...), suivi d'un quantificateur (?: abc) {2} abcabc
(? iLmsux) Chaque caractère d'iLmsux représente un modèle correspondant, qui ne peut être utilisé qu'au début de la chaîne, et plusieurs ( ? i) abc AbC peut être sélectionné
(? #…) Le contenu après # sera commenté a (? # test) bc abc
(? (id / name) yes-pattern | no-pattern) Pour faire correspondre le groupe avec l'id ou le nom d'alias, il doit correspondre à yes-pattern, sinon il doit correspondre à no-pattern, similaire à l'opérateur ternaire (\ d ) abc (? (1) \ d | abc) 1abc2 Les
règles ci-dessus ne concernent que la correspondance de chaînes. Dans les applications réelles, ce sera une combinaison de plusieurs correspondances simples, il est donc préférable de la maîtriser afin que Python puisse être utilisé avec compétence au début. Cependant, il est ennuyeux de mémoriser ces règles directement, et je les expliquerai en combinaison avec le module re de Python afin de les maîtriser.

Application du module Re
1. Voir la version
Python a ajouté le module re depuis la version 1.5, fournissant un modèle d'expression régulière dans le style Perl.
Le module re est intégré à Python, il peut donc être importé directement. Utilisez la méthode __version__ pour afficher la version et la méthode __all__ pour afficher les attributs:

import re
print (re .__ version__)
print (re .__ all__) # Les
résultats de sortie sont les suivants:
2.2.1
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'Pattern', 'Match', 'A', 'I', 'L', 'M ',' S ',' X ',' U ',' ASCII ',' IGNORECASE ',' LOCALE ',' MULTILINE ',' DOTALL ',' VERBOSE ',' UNICODE '] Le

code ci-dessus montre que le nouveau module n'implique pas de fonctions Il existe de nombreuses fonctions: l'une consiste à trouver des motifs dans le texte, l'autre à compiler des expressions et la troisième à faire correspondre plusieurs couches. En même temps, certaines constantes sont définies.

Deuxièmement, la recherche search () pour
trouver des motifs dans le texte utilise principalement la fonction search (). Cette fonction a trois paramètres: motif, chaîne et drapeaux;

pattern représente la chaîne d'expression utilisée lors de la compilation.
string représente la chaîne utilisée pour la mise en correspondance.
flags représente l'indicateur de compilation, qui est utilisé pour modifier la méthode de mise en correspondance des expressions régulières, telles que la sensibilité à la casse, la correspondance multiligne, etc. La valeur par défaut la valeur est 0.
Les valeurs d'indicateur couramment utilisées sont les suivantes:
Indicateur Signification
re.S (DOTALL) fait correspondre tous les caractères, y compris les
sauts de ligne re.I (IGNORECASE) rend la correspondance insensible à la casse
re.L (LOCALE) effectue une reconnaissance localisée matching et
re.M (MULTILINE) correspondent à plusieurs lignes, et l'influence ^ $
re.X (la VERBOSE) à travers un format plus flexible pour faciliter la compréhension de regex
re.U le caractère d'analyse du jeu de caractères Unicode, influence \ w, \ W, \ b. La fonction \ B
re.serach () prend le modèle et le texte numérisé en entrée et renvoie l'objet correspondant. Si aucun modèle correspondant n'est trouvé, elle renvoie Aucun:

Il ressort de ce qui précède que la correspondance est l'objet correspondant renvoyé, qui contient des informations sur la nature de la correspondance. Lors de l'utilisation d'expressions régulières, la position où le modèle apparaît dans la chaîne d'origine a des méthodes telles que start (), end (), group (), span (), groups ():

start () retourne la position de début de la correspondance
end () retourne la position de fin du match
group () retourne la chaîne correspondante
span () retourne un tuple
contenant la position de la correspondance (début, fin) groups () retourne une liste qui contient toutes les expressions régulières Un tuple de chaînes de groupe, de 1 au numéro de groupe contenu, généralement sans paramètres. De plus, il existe une méthode group (n, m), qui renvoie la chaîne correspondant au numéro de groupe (n, m).


3. Pré-compilation Compile ()
Utilisez la fonction compile () pour compiler des expressions régulières en objets d'expression régulière afin d'améliorer l'efficacité de l'exécution. Cette fonction renvoie un modèle d'objet avec deux paramètres pattern et flags = 0. La signification est la même que celle mentionnée dans search () ci-dessus.

Habituellement, les expressions compilées sont des expressions fréquemment utilisées dans le programme, donc la compilation sera plus efficace, mais elle coûtera également une certaine quantité de cache. Un autre avantage de l'utilisation d'expressions compilées est que toutes les expressions sont compilées lorsque le module est chargé, plutôt que lorsque le programme répond aux actions de l'utilisateur.

Quatrièmement, correspondance de la position de début match ()
Utilisez la fonction match () pour faire correspondre le début de la chaîne de texte. Cette méthode n'est pas une correspondance complète. Elle correspond uniquement à la position de départ / à l'en-tête de la chaîne. est une chaîne après lui, bien que ce qui suit puisse correspondre, mais tous sont ignorés.


Five, findall () et finditer () traversal matching
Utilisez la fonction findall () pour parcourir la correspondance, obtenir toutes les chaînes correspondantes dans la chaîne et renvoyer une liste. La fonction de cette fonction et les paramètres sont les mêmes que la fonction search (), mais elle renvoie toutes les sous-chaînes correspondantes et non superposées.

La fonction finditer () est utilisée de la même manière que findall (), sauf qu'elle renvoie un itérateur au lieu d'une liste. Il générera des instances Match.


(Informations anti-escalade interstitielles) Adresse CSDN Blogger: https://wzlodq.blog.csdn.net/

6. Split () Split La
fonction split () peut diviser la chaîne à mettre en correspondance dans la sous-chaîne correspondante et renvoyer une liste.

7. Sub () et subn () replacement La
fonction sub utilise pattern pour remplacer chaque sous-chaîne correspondante dans la chaîne et renvoie la sous-chaîne remplacée au format re.sub (pattern, repl, string, count, flag). La fonction subn () renvoie une fois de plus de remplacement sur cette base.

motif est la chaîne d'expression
repel est la
chaîne de caractères remplacée est la chaîne utilisée pour faire correspondre le
nombre est le nombre maximum de remplacements, après avoir dépassé, l'
indicateur ne sera pas remplacé. Comme ci-dessus


Expressions régulières couramment utilisées
La
vérification des expressions numériques sert principalement à la mise en correspondance de la vérification des expressions régulières pour les nombres qui apparaissent dans le texte. Ce qui suit expliquera certaines expressions couramment utilisées et utilisera le module re pour les traiter et les démontrer.

^ [0-9] * $
et le ^ mentionné ci-dessus sont la position de départ de la chaîne correspondante; $ est la position de fin du caractère correspondant; [0-9] représente n'importe quel nombre; * correspond au caractère précédent 0 ou d'innombrables fois . Ce qui suit ne sera pas répété, veuillez vous référer à ce qui précède si vous n'êtes pas sûr.
En résumé, cette expression est utilisée pour faire correspondre des nombres.


^ [1-9] \ d * $ correspond à des entiers positifs non nuls


^ \ d {n} $ correspond à n chiffres


^ \ d {n,} $ correspond à au moins n chiffres


^ \ d {m, n} $ correspond aux nombres de m à n


^ [1-9] [0-9] *. [0-9] {1,2}? $ Correspond aux nombres avec jusqu'à deux décimales qui ne commencent pas par 0


Caractères Dans l'
analyse de texte, le traitement des expressions de caractères est souvent impliqué, comme l'extraction des caractères chinois et la suppression de la longueur des caractères.

[\ u4e00- \ u9fa5] Correspondance des caractères chinois


^ [A-Za-z0-9] + $ Anglais et correspondance numérique


^ [\ u4E00- \ u9FA5AA-Za-z0-9] + $ Les chiffres chinois et anglais correspondent


Autre
^ \ w + (- +. \ W) * @ \ w + ([-.] \ W +) * \. \ W + ([-.] \ W +) * $ Vérification de l'adresse e-mail


^ 1 [34589] \\ d {9} $ numéro de téléphone mobile


^ [1-9] \ d {5} (18 | 19 | ([23] \ d)) \ d {2} ((0 [1-9]) | (10 | 11 | 12)) (([ 0-2] [1-9]) | 10 | 20 | 30 | 31) \ d {3} [0-9Xx] $ ID numéro


^ [1-9] \ d {5} (?! \ D) $ Code postal


(? i) ^ ([a-z0-9] + (- [a-z0-9] +) * \.) + [Az] {2,} $ Nom de domaine


Résumé La
fonction la plus importante du module d'expression régulière est de filtrer, de filtrer les données requises de la cible, puis de filtrer toutes les données caractéristiques de la chaîne via la combinaison de fonctions, etc., qui est la base pour les robots Python suivants à analyser les données.

Je suppose que tu aimes

Origine blog.csdn.net/qq_26280383/article/details/114367775
conseillé
Classement