Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Python RegEx :re.match(), re.search(), re.findall() avec l'exemple

Qu'est-ce que l'expression régulière en Python ?

Une expression régulière (RE) dans un langage de programmation est une chaîne de texte spéciale utilisée pour décrire un modèle de recherche. Il est extrêmement utile pour extraire des informations à partir de textes tels que du code, des fichiers, des journaux, des feuilles de calcul ou même des documents.

Lors de l'utilisation de l'expression régulière Python, la première chose à faire est de reconnaître que tout est essentiellement un caractère, et nous écrivons des modèles pour correspondre à une séquence spécifique de caractères également appelée chaîne. Les lettres ascii ou latines sont celles qui se trouvent sur vos claviers et Unicode est utilisé pour faire correspondre le texte étranger. Il comprend les chiffres et la ponctuation et tous les caractères spéciaux comme $#@!%, etc.

Dans ce tutoriel Python RegEx, nous allons apprendre-

Par exemple, une expression régulière Python pourrait indiquer à un programme de rechercher un texte spécifique dans la chaîne, puis d'imprimer le résultat en conséquence. L'expression peut inclure

L'expression régulière ou RegEx en Python est désignée par RE (les RE, les regex ou le modèle de regex) sont importés via re module . Python prend en charge les expressions régulières via des bibliothèques. RegEx en Python prend en charge diverses choses comme les modificateurs, les identificateurs et les espaces blancs .

Identifiants Modificateurs Caractères d'espace blanc Évasion requise
\d=n'importe quel nombre (un chiffre) \d représente un chiffre.Ex :\d{1,5} il déclarera un chiffre entre 1,5 comme 424 444 545 etc. \n =nouvelle ligne . + * ? [] $ ^ () {} | \
\D=tout sauf un nombre (un non-chiffre) + =correspond à 1 ou plus \s=espace
\s =espace
(tabulation, espace, saut de ligne etc.)
 ? =correspond à 0 ou 1 \t =tab
\S=tout sauf un espace * =0 ou plus \e =échapper
\w =lettres (Reconnaître les caractères alphanumériques, y compris "_") $ correspond à la fin d'une chaîne \r =retour chariot
\W =tout sauf des lettres ( Correspond à un caractère non alphanumérique à l'exception de "_") ^ correspond au début d'une chaîne \f=saut de formulaire
. =tout sauf des lettres (points) | correspond soit à x/y —————–
\b =n'importe quel caractère sauf pour le retour à la ligne [] =plage ou "variance" —————-
\. {x} =cette quantité de code précédent —————–

Syntaxe des expressions régulières (RE)

import re

Nous allons commencer le didacticiel sur les expressions avec cet exercice simple en utilisant les expressions (w+) et (^).

Exemple d'expression w+ et ^

Ici, nous verrons un exemple Python RegEx de la façon dont nous pouvons utiliser les expressions w+ et ^ dans notre code. Nous couvrons la fonction re.findall() en Python, plus loin dans ce didacticiel, mais pendant un moment, nous nous concentrons simplement sur les expressions \w+ et \^.

Par exemple, pour notre chaîne "guru99, education is fun" si nous exécutons le code avec w+ et ^, cela donnera la sortie "guru99".

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)

N'oubliez pas que si vous supprimez le signe + du w+, la sortie changera et ne donnera que le premier caractère de la première lettre, c'est-à-dire [g]

Exemple d'expression \s dans la fonction re.split

Pour comprendre le fonctionnement de cette RegEx en Python, nous commençons par un simple exemple Python RegEx d'une fonction fractionnée. Dans l'exemple, nous avons divisé chaque mot en utilisant la fonction "re.split" et en même temps nous avons utilisé l'expression \s qui permet d'analyser chaque mot de la chaîne séparément.

Lorsque vous exécutez ce code, il vous donnera la sortie ['we', 'are', 'splitting', 'the', 'words'].

Maintenant, voyons ce qui se passe si vous supprimez "\" de s. Il n'y a pas d'alphabet 's' dans la sortie, c'est parce que nous avons supprimé '\' de la chaîne, et il évalue "s" comme un caractère normal et divise ainsi les mots partout où il trouve "s" dans la chaîne.

De même, il existe une série d'autres expressions régulières Python que vous pouvez utiliser de différentes manières dans Python comme \d,\D,$,\.,\b, etc.

Voici le code complet

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print((re.split(r'\s','we are splitting the words')))
print((re.split(r's','split the words')))

Ensuite, nous verrons les types de méthodes utilisées avec les expressions régulières en Python.

Utilisation des méthodes d'expression régulière

Le package "re" fournit plusieurs méthodes pour effectuer des requêtes sur une chaîne d'entrée. Nous verrons les méthodes de re en Python :

Remarque :Basé sur les expressions régulières, Python propose deux opérations primitives différentes. La méthode de correspondance recherche une correspondance uniquement au début de la chaîne tandis que la recherche recherche une correspondance n'importe où dans la chaîne.

re.match()

re.match() La fonction de re en Python recherchera le modèle d'expression régulière et renverra la première occurrence. La méthode Python RegEx Match recherche une correspondance uniquement au début de la chaîne. Ainsi, si une correspondance est trouvée dans la première ligne, elle renvoie l'objet match. Mais si une correspondance est trouvée dans une autre ligne, la fonction Python RegEx Match renvoie null.

Par exemple, considérez le code suivant de la fonction Python re.match(). L'expression "w+" et "\W" correspondra aux mots commençant par la lettre "g" et par la suite, tout ce qui ne commence pas par "g" n'est pas identifié. Pour vérifier la correspondance de chaque élément de la liste ou de la chaîne, nous exécutons la boucle for dans cet exemple Python re.match().

re.search() :trouver un modèle dans le texte

re.search() La fonction recherchera le modèle d'expression régulière et renverra la première occurrence. Contrairement à Python re.match(), il vérifiera toutes les lignes de la chaîne d'entrée. La fonction Python re.search() renvoie un objet match lorsque le modèle est trouvé et "null" si le modèle n'est pas trouvé

Comment utiliser la recherche() ?

Pour utiliser la fonction search(), vous devez d'abord importer le module Python re, puis exécuter le code. La fonction Python re.search() prend le "motif" et le "texte" à analyser à partir de notre chaîne principale

Par exemple, nous recherchons ici deux chaînes littérales "Software testing" "guru99", dans une chaîne de texte "Software Testing is fun". Pour les "tests de logiciels", nous avons trouvé la correspondance, donc il renvoie la sortie de Python re.search () Exemple comme "trouvé une correspondance", tandis que pour le mot "guru99", nous n'avons pas pu trouver dans la chaîne, donc il renvoie la sortie comme "Aucune correspondance ”.

re.findall()

trouvetout() module est utilisé pour rechercher "toutes" les occurrences qui correspondent à un modèle donné. En revanche, le module search() ne renverra que la première occurrence correspondant au modèle spécifié. findall() itérera sur toutes les lignes du fichier et renverra toutes les correspondances de motif qui ne se chevauchent pas en une seule étape.

Comment utiliser re.findall() en Python ?

Ici, nous avons une liste d'adresses e-mail, et nous voulons que toutes les adresses e-mail soient extraites de la liste, nous utilisons la méthode re.findall() en Python. Il trouvera toutes les adresses e-mail de la liste.

Voici le code complet pour Exemple de re.findall()

import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print((z.groups()))
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
    if re.search(pattern, text):
        print('found a match!')
else:
    print('no match')
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

Drapeaux Python

De nombreuses méthodes Python Regex et fonctions Regex prennent un argument facultatif appelé Flags. Ces drapeaux peuvent modifier la signification du modèle Python Regex donné. Pour les comprendre, nous verrons un ou deux exemples de ces drapeaux.

Divers drapeaux utilisés dans Python incluent

Syntaxe pour les drapeaux Regex À quoi sert ce drapeau
[re.M] Faire en sorte que début/fin considère chaque ligne
[re.I] Il ignore la casse
[re.S] Faire [ . ]
[re.U] Faire en sorte que { \w,\W,\b,\B} respecte les règles Unicode
[re.L] Faites en sorte que {\w,\W,\b,\B} suive les paramètres régionaux
[re.X] Autoriser les commentaires dans Regex

Exemple de re.M ou Multiline Flags

En multiligne, le caractère de modèle [^] correspond au premier caractère de la chaîne et au début de chaque ligne (suivant immédiatement après chaque saut de ligne). Alors que l'expression petit "w" est utilisée pour marquer l'espace avec des caractères. Lorsque vous exécutez le code, la première variable "k1" n'imprime que le caractère "g" pour le mot guru99, tandis que lorsque vous ajoutez un indicateur multiligne, il récupère les premiers caractères de tous les éléments de la chaîne.

Voici le code

import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print(k1)
print(k2)

De même, vous pouvez également utiliser d'autres drapeaux Python comme re.U (Unicode), re.L (Suivre les paramètres régionaux), re.X (Autoriser les commentaires), etc.

Exemple Python 2

Les codes ci-dessus sont des exemples Python 3, si vous voulez exécuter en Python 2, veuillez considérer le code suivant.

# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1

# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))

# Using re.findall for text
import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print(z.groups())
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print 'Looking for "%s" in "%s" ->' % (pattern, text),
    if re.search(pattern, text):
        print 'found a match!'
else:
    print 'no match'
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print email

# Example of re.M or Multiline Flags
import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2

Résumé

Une expression régulière dans un langage de programmation est une chaîne de texte spéciale utilisée pour décrire un modèle de recherche. Il comprend des chiffres et des signes de ponctuation et tous les caractères spéciaux comme $#@!%, etc. L'expression peut inclure des littéraux

En Python, une expression régulière est notée RE (les RE, les regex ou le modèle de regex) sont intégrés via le module Python re.


Python

  1. Python String strip() Fonction avec EXAMPLE
  2. Python String count() avec des EXEMPLES
  3. Python String format() Expliquer avec des EXEMPLES
  4. Longueur de la chaîne Python | Méthode len() Exemple
  5. Méthode Python String find() avec exemples
  6. Fonction Python round() avec EXEMPLES
  7. Fonction Python map() avec EXEMPLES
  8. Python Timeit() avec des exemples
  9. Compteur Python dans les collections avec exemple