Correspondance et remplacement de la recherche de chaînes Python (détaillé)

Veuillez signaler qu'il y a une erreur, elle est en cours de modification ...


Les bases de l'utilisation régulière en python

L'utilisation de modificateurs réguliers

paramètres python dans le flagparamètre représentant le modificateur régulier.
Établir une pluralité de modificateurs d'expression régulière configuration d'adaptation: re.I | re.M.

Modificateur la description
re.I Rendre le match insensible à la casse
re.L Faire une correspondance sensible aux paramètres régionaux
re.M Correspondance multiligne, affecte ^ et $
re.S Faire. Faire correspondre tous les caractères, y compris les sauts de ligne
re.U Analysez les caractères en fonction du jeu de caractères Unicode. Cet indicateur affecte \ w, \ W, \ b, \ B.
re.X Cet indicateur vous permet d'écrire plus facilement des expressions régulières en vous offrant une mise en forme plus flexible.

Références arrière en python

  1. Backquote: barre oblique inverse et nombre (\ N)
  2. (?<name>exp)Faites correspondre exp et capturez le texte dans le groupe nommé name, qui peut également être écrit sous la forme (?'name'exp).
    Mais en Python, pour (?P<name>exp).
  • Utilisez ultérieurement group(1)ou group(name)obtenez l'expression de correspondance des métadonnées de contenu.

> Il y a une question sur les backreferences invalides

Remarque : les références arrière doivent préfixer r, sinon elles seront confondues avec des nombres binaires Python: par exemple, \1la signification réelle devient\x01


Exigences: une seule chaîne de correspondance

re.match() fonction

En python match(), cette chaîne doit commencer par cette expression régulière , [vérifier si le début de la chaîne est correct]. Si le début de la chaîne est différent, la correspondance échoue et retourne none. (C'est ce que disent de nombreux articles "Vérifier si RE correspond au début de la chaîne")

re.search() fonction

search()C'est une correspondance partielle dans la chaîne entière , [y a-t-il quelque chose comme ça dans la chaîne]. Il est à noter qu'un search()seul match

re.fullmatch() fonction

fullmatch(): La chaîne correspond complètement à la normale et la chaîne correspond complètement à la normale [Vérifiez si cette chaîne est ce que nous voulons]


Exigences: recherche en texte intégral et chaîne de remplacement

re.sub() fonction

Les besoins de base à utiliser replace(), bien sûr, le module re est mentionné ici, et des remplacements complexes doivent être utilisés re.sub(). Il remplacera toutes les correspondances dans la chaîne.

substitut
n .: 代
;

re.sub(pattern, repl, string, count=0, flags=0)

pattern: Expression régulière
repl: La chaîne à remplacer, qui peut être une fonction
string: Chaîne source
count: Le nombre minimum de fois à remplacer
flag: Le mode de correspondance de l'expression régulière ( n'oubliez pas de ne pas la définir sur count, il faut l'écrire flags=xxx)

Modificateurs Regex - Drapeaux facultatifs | Tutoriel pour débutants

# 将“\n3.”等换为“【3】”
oriStr = '\n3.这是第三点'
resStr = re.sub(r'\n(\d+)\.', r'\n【\1】', oriStr)
print(resStr)

[3] Ceci est le troisième point


Exigences: recherche de texte intégral correspondant à la chaîne

re.findall()Et re.finditer()fonction

  1. re.findall()Pour renvoyer une liste de toutes les correspondances
re.findall(pattern, string, flags=0)
pattern.findall(string[, pos[, endpos]])
import re
 
result1 = re.findall(r'\d+','runoob 123 google 456')
 
pattern = re.compile(r'\d+')   # 查找数字
result2 = pattern.findall('runoob 123 google 456')
result3 = pattern.findall('run88oob123google456', 0, 10)
 
print(result1)
print(result2)
print(result3)

Résultat de sortie:

["123", "456"]
["123", "456"]
["88", "12"]

  1. re.finditer(), Qui renvoie un itérateur de toutes les correspondances
re.finditer(pattern, string, flags=0)
import re
 
it = re.finditer(r"\d+","12a32bc43jf3") 
for match in it: 
    print (match.group())

12
32
43
3


Exigences: diviser une chaîne avec des caractères correspondants

re.split() fonction

Utilisez la chaîne correspondante comme caractères séparés et renvoyez la liste avec la chaîne divisée

re.split(pattern, string[, maxsplit=0, flags=0])
>>>import re

>>> re.split('\W+', 'runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']

>>> re.split('(\W+)', ' runoob, runoob, runoob.') # 小括号表示保留这个分隔者
['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', ''

Cet article référence: Expressions régulières Python3 | Tutoriel Rookie

Je suppose que tu aimes

Origine blog.csdn.net/zsq8187/article/details/109749945
conseillé
Classement