Latest web development tutorials

Python expressions régulières

Les expressions régulières sont une séquence de caractères spéciaux, il peut vous aider à vérifier facilement si une chaîne correspond à un modèle.

Python re du module augmente depuis la version 1.5, modèle d'expression régulière qui fournit Perl-style.

re le module permet langage Python possède toutes les caractéristiques des expressions régulières.

compiler fonction pour générer un objet d'expression régulière à partir d'une chaîne de modèle et des drapeaux de paramètres facultatifs. Cet objet a un ensemble de méthodes pour l'appariement d'expression régulière et de substitution.

re module fournit également une méthode compatible avec ces fonctions de caractéristiques qui utilisent une chaîne de modèle comme premier argument.

Cette section présente les fonctions communes de traitement d'expression régulière Python.


fonction re.match

re.match essaie de correspondre à un modèle à partir de la position de départ de la chaîne, sinon la position de départ correspondant est réussie, match () retourne pas.

Syntaxe de la fonction:

re.match(pattern, string, flags=0)

Paramètres de fonction:

Paramètres description
motif Associez expression régulière
string La chaîne de match.
drapeaux Drapeau, la mise en correspondance d'expression régulière est utilisée pour contrôler, par exemple: si le multi-ligne de la casse correspond, et ainsi de suite.

Succès méthode match re.match retourne un objet de correspondance, sinon aucune.

Nous pouvons utiliser la fonction groupe (num) ou des groupes () pour obtenir les objets correspondants correspondent à des expressions.

méthodes d'objets correspondants description
groupe (num = 0) L'ensemble correspondant de chaîne d'expression, le groupe () peut entrer dans plus d'un numéro de groupe, auquel cas il renvoie une valeur correspondant à ces groupes de tuples.
(groupes) Il retourne un tuple de tous les groupes de la chaîne, de 1 au nombre contenu dans le groupe.

Exemple 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.match('com', 'www.w3big.com'))         # 不在起始位置匹配

Exécutez l'exemple ci-dessus est sortie:

(0, 3)
None

Exemple 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Les résultats des exemples ci-dessus sont les suivantes:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

méthode re.search

re.search balayer toute la chaîne et renvoie le premier match réussi.

Syntaxe de la fonction:

re.search(pattern, string, flags=0)

Paramètres de fonction:

Paramètres description
motif Associez expression régulière
string La chaîne de match.
drapeaux Drapeau, la mise en correspondance d'expression régulière est utilisée pour contrôler, par exemple: si le multi-ligne de la casse correspond, et ainsi de suite.

Succès méthode match re.search retourne un objet de correspondance, sinon aucune.

Nous pouvons utiliser la fonction groupe (num) ou des groupes () pour obtenir les objets correspondants correspondent à des expressions.

méthodes d'objets correspondants description
groupe (num = 0) L'ensemble correspondant de chaîne d'expression, le groupe () peut entrer dans plus d'un numéro de groupe, auquel cas il renvoie une valeur correspondant à ces groupes de tuples.
(groupes) Il retourne un tuple de tous les groupes de la chaîne, de 1 au nombre contenu dans le groupe.

Exemple 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.search('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.search('com', 'www.w3big.com').span())         # 不在起始位置匹配

Exécutez l'exemple ci-dessus est sortie:

(0, 3)
(11, 14)

Exemple 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"
Les résultats des exemples ci-dessus sont les suivantes:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

La re.match de différence et re.search

re.match correspond seulement au début de la chaîne, si le début de la chaîne ne répond pas à l'expression régulière, la correspondance échoue, la fonction retourne None, et re.search correspond à la chaîne entière, jusqu'à ce qu'il trouve une correspondance.

exemple:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print "search --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"
Des exemples des résultats ci-dessus sont les suivants:
No match!!
search --> matchObj.group() :  dogs

Rechercher et remplacer

Le module de re Python fournit re.sub pour le match de chaîne de remplacement.

Syntaxe:

re.sub(pattern, repl, string, max=0)

La chaîne retournée est la chaîne avec les plus à gauche matchs RE ne sera pas répétée à remplacer. Si le motif est introuvable, les caractères seront retournés inchangés.

En option le nombre de paramètre est le nombre maximal de fois qu'un correspondant de remplacement du motif; comptage doit être un entier non négatif. La valeur par défaut est 0 signifie pour remplacer toutes les occurrences.

exemple:

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num
Les résultats des exemples ci-dessus sont les suivantes:
Phone Num :  2004-959-559
Phone Num :  2004959559

modificateur Regex - drapeau en option

Les expressions régulières peuvent contenir des drapeaux facultatifs modificateurs pour contrôler le mode match. Modificateur est spécifié comme un drapeau en option. (|) Pour spécifier plusieurs drapeaux qui peuvent être BitWise ou par l'intermédiaire. Comme re.I | RE.M est réglé sur des drapeaux I et M:

Modificateurs description
re.I Alors que l'appariement ne soit pas sensible à la casse
re.L Avez-identification de localisation (locale-courant) correspondant
RE.M Multi-ligne correspondante, affectant ^ et $
re.S So., newlines Y compris tous les caractères correspondent
re.U Selon résoudre jeu de caractères Unicode caractères. Ce drapeau affecte \ w, \ W, \ b, \ B.
re.X Ce drapeau en vous donnant le format plus souple de sorte que vous allez écrire des expressions régulières plus facile à comprendre.

modèle d'expression régulière

chaîne de motif en utilisant une syntaxe spéciale pour désigner une expression régulière:

Les lettres et les chiffres eux-mêmes. Un modèle d'expression régulière de lettres et de chiffres correspondent à la même chaîne.

La plupart des lettres et des chiffres auront un sens différent quand il est précédé par une barre oblique inverse.

Ponctuation est échappé que lorsque le match lui-même, ou ils représentent une signification particulière.

Backslash lui-même doit utiliser l'évasion backslash.

Puisque les expressions régulières contiennent habituellement backslashes, de sorte que vous feriez mieux d'utiliser la chaîne d'origine pour les représenter. éléments de schéma (tels que r '/ t', ce qui équivaut à '// t') correspondent aux caractères spéciaux correspondants.

Le tableau suivant répertorie les éléments spécifiques de syntaxe de modèle d'expression régulière. Si vos habitudes d'utilisation tout en fournissant l'argument optionnel flags, le sens de certains éléments du motif va changer.

mode description
^ Correspond au début de la chaîne
$ Correspond à la fin de la chaîne.
. Correspond à tout caractère sauf newline, lorsque le drapeau re.DOTALL est spécifié, vous pouvez faire correspondre à tout caractère compris newline.
[...] Il est utilisé pour représenter un groupe de personnages, énumérés séparément: [amk] correspond 'a', 'm' ou 'k'
[^ ...] Non [] caractères: [^ abc] correspond en plus des caractères a, b, c.
re * 0 ou plus d'expression correspondant.
re + Une ou plusieurs des expressions correspondant.
re? Match 0 ou 1 par les expressions régulières qui précèdent pour définir des segments, de manière non gourmande
re {n}
re {n} Une correspondance exacte de n précédente expression.
re {n, m} Match n à m fois par les expressions régulières qui précèdent pour définir des segments, façon gourmande
a | b Un match ou b
(Re) G match de l'expression dans les parenthèses, représente également un groupe
(Imx?) Expression régulière se compose de trois drapeaux optionnels: i, m, ou x. Elle affecte uniquement la zone entre parenthèses.
(? -imx) Les expressions régulières Fermer i, m, ou x drapeau en option. Elle affecte uniquement la zone entre parenthèses.
(?: Re) Similaires (...), mais ne représente pas un groupe
(Imx :? Re) Je l'utilise entre parenthèses, m, ou x drapeau option
(-imx :? Re) Ne pas utiliser i, m entre parenthèses, ou x drapeau option
(? # ...) Remarque.
(? = Re) Transférez que delimiter. Si l'expression régulière contenue, représenté ici par ..., correspond avec succès à l'emplacement actuel, et ne parvient pas autrement. Cependant, une fois l'expression contenue a été essayé, le moteur correspondant ne fait pas avancer, le reste de la configuration est même essayer delimiter droite.
(?! Re) Forward delimiter négation. Et delimiter certainement contraire, avec succès lorsque l'expression contenue ne correspond pas à la position actuelle dans la chaîne
(?> Re) correspondance de motif indépendant, éliminant retour en arrière.
\ W alphanumérique Match et soulignement
\ W Associez non-alphanumériques et caractères de soulignement
\ S Correspond à tout caractère d'espacement, équivalent à [\ t \ n \ r \ f].
\ S Correspond à tout caractère non-blanc
\ D Correspond à tout nombre qui est équivalent à [0-9].
\ D Correspond à tout non-numérique
\ A Correspond au début de la chaîne
\ Z Match fin de chaîne, si elle existe newline, juste avant la fin de la chaîne pour correspondre newline. c
\ Z Match fin de chaîne
\ G Match terminé la dernière position.
\ B Correspond à une limite de mot, qui est, il se réfère à l'emplacement et les espaces entre les mots. Par exemple, 'er \ b' peut correspondre à la «jamais» dans le «er», mais ne peut pas correspondre à la «verbe» dans le «er».
\ B Associez non-limite de mot. 'Er \ B' peut correspondre au «verbe» dans le «er», mais ne peut pas correspondre à «jamais» dans le «er».
\ N, \ t, et similaires. Correspond à une nouvelle ligne. Correspond à un caractère de tabulation. attendez
\ 1 ... \ 9 Matching sous-expression n-ième paquet.
\ 10 Faites correspondre le premier n paquets subexpression si elle est après un match. Dans le cas contraire, l'expression se réfère au code de caractère octal.

Exemples d'expressions régulières

matchs de caractères

Exemples description
python Matching "python".

Classes de caractères

Exemples description
[Pp] ython Matching "Python" ou "python"
rub [vous] Match "ruby" ou "plouc"
[Aeiou] Toute une des lettres entre parenthèses correspondant
[0-9] Correspond à tout chiffre. Semblable à [0123456789]
[Az] Correspond toutes les lettres minuscules
[AZ] Correspond à tout en majuscules
[A-zA-Z0-9] Correspondances des lettres et des chiffres
[^ Aeiou] En plus de tous les caractères autres que des lettres aeiou
[^ 0-9] caractère correspondants, sauf les chiffres

classes de caractères spéciaux

Exemples description
. Correspond à tout caractère sauf "\ n" est. Pour faire correspondre notamment '\ n', y compris les caractères, comme l'utilisation de «[. \ N]« mode.
\ D Correspond à un caractère de chiffres. Equivalent à [0-9].
\ D Faites correspondre un caractère non numérique. Il est équivalent à [^ 0-9].
\ S Matches des caractères blancs, y compris les espaces, tabulations, sauts de page, et ainsi de suite. Est équivalent à [\ f \ n \ r \ t \ v].
\ S Correspond tous les caractères non-blancs. Est équivalent à [^ \ f \ n \ r \ t \ v].
\ W Faites correspondre tout caractère de mot, y compris de soulignement. Il est équivalent à «[A-Za-z0-9_]».
\ W Correspond à tout caractère non-mot. Il est équivalent à '[^ A-Za-z0-9_] ».