Maison >développement back-end >Tutoriel Python >Comment trouver la position exacte de chaque correspondance dans l'expression régulière de Python ?

Comment trouver la position exacte de chaque correspondance dans l'expression régulière de Python ?

王林
王林avant
2023-08-31 12:13:34700parcourir

Le module

Comment trouver la position exacte de chaque correspondance dans lexpression régulière de Python ?

Introduction

re est l'expression régulière que nous utilisons en Python. Les expressions régulières sont utilisées pour les recherches de texte et les opérations de texte plus complexes. Des outils comme grep et sed, des éditeurs de texte comme vi et emacs et des langages informatiques comme Tcl, Perl et Python ont tous une prise en charge intégrée des expressions régulières.

Le module re en Python fournit des fonctions pour faire correspondre les expressions régulières.

Les expressions régulières qui définissent le texte que nous voulons rechercher ou modifier sont appelées modèles. Les littéraux de texte et les métacaractères constituent cette chaîne. Les fonctions compilées sont utilisées pour créer des schémas. Il est recommandé d'utiliser des chaînes brutes car les expressions régulières contiennent souvent des caractères spéciaux. (Le caractère r est utilisé pour indiquer une chaîne brute.) Ces caractères ne sont interprétés que lorsqu'ils sont combinés dans un modèle.

Un motif peut être appliqué à une chaîne de texte à l'aide de l'une des fonctions, le motif est utilisé une fois l'assemblage terminé. Les fonctions disponibles incluent Match, Search, Find et Finditer.

La syntaxe utilisée

La fonction d'expression régulière utilisée ici est : Nous utilisons la fonction d'expression régulière pour trouver des correspondances.

re.match(): Determines if the RE matches at the beginning of the string. If zero or more characters at the beginning of the string match the regular expression pattern, the match method returns a match object.

p.finditer(): Finds all substrings where the RE matches and returns them as an iterator. An iterator delivering match objects across all non-overlapping matches for the pattern in a string is the result of the finditer method.

re.compile(): Compile a regular expression pattern into a regular expression object, which can be used for matching using its match(), search(), and other methods described below. The expression’s behavior can be modified by specifying a flag's value. Values can be any of the following variables combined using bitwise OR (the | operator).

m.start(): m.start() returns the offset in the string at the match's start.

m.group(): You may use the multiple-assignment approach to assign each value to a different variable when mo.groups() returns a tuple of values, as in the areaCode, mainNumber = mo.groups() line below.

search: It is comparable to re.match() but does not require that we just look for matches at the beginning of the text. The search() function can locate a pattern in the string at any location, but it only returns the first instance of the pattern.

Algorithm

  • Utilisez import re pour importer le module d'expression régulière.

  • Utilisez la fonction re.compile() pour créer un objet d'expression régulière. (N'oubliez pas d'utiliser des chaînes brutes.)

  • Transmettez la chaîne que vous souhaitez rechercher à la méthode finditer() de l'objet Regex. Cela renverra un objet Match.

  • Appelez la méthode group() de l'objet Match pour renvoyer la chaîne de texte correspondante.

  • Nous pouvons également utiliser la méthode span() pour obtenir l'index de début et de fin dans un tuple.

Exemple

 #importing re functions
import re
#compiling [A-Z0-9] and storing it in a variable p
p = re.compile("[A-Z0-9]")
#looping m times in p.finditer
for m in p.finditer('A5B6C7D8'):
#printing the m.start and m.group
   print m.start(), m.group()

Sortie

Cela produira la sortie −

0 A
1 5
2 B
3 6
4 C
5 7
6 D
7 8

Explication du code

Utilisez import re pour importer le module d'expression régulière. Utilisez la fonction re.compile() pour créer un objet d'expression régulière ("[A-Z0-9]") et affectez-le à la variable p. Utilisez une boucle pour parcourir m et transmettez la chaîne que vous souhaitez rechercher à la méthode finditer() de l'objet d'expression régulière. Cela renverra un objet Match. Appelez les méthodes m.group() et m.start() de l'objet Match pour renvoyer la chaîne qui correspond réellement au texte.

Exemple

# Python program to illustrate
# Matching regex objects
# with groups
import re
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print(mo.groups())

Sortie

Cela produira la sortie −

('415', '555-4242')

Explication du code

Utilisez import re pour importer le module d'expression régulière. Utilisez la fonction re.compile() pour créer un objet d'expression régulière (r'(ddd)-(ddd-dddd)') et affectez-le à la variable phoneNumRegex. Passez la chaîne à rechercher à la méthode search() de l'objet Regex et stockez-la dans la variable mo. Cela renverra un objet Match. Appelez la méthode mo.groups() de l'objet Match pour renvoyer la chaîne de texte correspondante.

Conclusion

Les méthodes search(), match() et finditer() fournies par le module Python re nous permettent de faire correspondre des modèles d'expression régulière, et si la correspondance réussit, elle fournira une instance d'objet Match. Utilisez les méthodes start(), end() et span() de cet objet Match pour obtenir des informations détaillées sur la chaîne correspondante.

Lorsqu'il y a de nombreuses correspondances, vous pouvez courir un risque de surcharge de mémoire si vous utilisez findall() pour toutes les charger. Vous pouvez obtenir un objet itérateur de toutes les correspondances potentielles en utilisant la méthode finditer(), ce qui améliorera l'efficacité.

Cela signifie que finditer() fournit un objet appelable qui, lorsqu'il est appelé, charge le résultat en mémoire.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer