Maison >développement back-end >Tutoriel Python >Quelles sont les manières d'utiliser le module re dans les expressions régulières python ? Introduction à l'utilisation du module re

Quelles sont les manières d'utiliser le module re dans les expressions régulières python ? Introduction à l'utilisation du module re

不言
不言original
2018-09-15 14:15:443111parcourir

Le contenu de cet article explique comment utiliser le module re dans les expressions régulières python ? L'introduction à l'utilisation du module re a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Les expressions régulières sont la méthode la plus couramment utilisée pour traiter les chaînes, et les expressions régulières peuvent être vues partout dans notre codage.

Les expressions régulières en python sont légèrement différentes de celles des autres langages :

1 Lors du remplacement d'une chaîne, la chaîne remplacée peut être une fonction

2 , la scission. La fonction peut spécifier le nombre de divisions, ce qui entraînera des pièges

3 L'expression définie dans l'élément précédent doit être d'une longueur fixe

Ce qui suit est une description détaillée de la façon de l'utiliser. le module re. En fait, notez Les trois différences mentionnées ci-dessus sont exactement les mêmes

1 match

Description :

re.match essaie. pour correspondre à partir du début de la chaîne. Si un modèle ne correspond pas correctement à la position de départ, match() renverra Aucun.

Syntaxe :

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

les drapeaux sont des drapeaux facultatifs, plusieurs drapeaux peuvent être obtenus par OU au niveau du bit (|) spécifié. Par exemple, re.I | re.M est défini sur les identifiants I et M :

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 w, W, b, B.

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

Modificateur
Description
re.I re.L Faire la localisation Identifier Correspondances (compatibles avec les paramètres régionaux)
re.M Plusieurs lignes correspondantes, influence ^ et $
re.S make Match inclut les sauts de ligne. Tous les caractères, y compris
re.U Analysé selon le jeu de caractères Unicode personnage. Ce drapeau affecte w, W, b, B.
re. >Cet indicateur rend vos expressions régulières plus faciles à comprendre en vous offrant un format plus flexible.

Si la correspondance réussit, la méthode re.match renvoie un objet correspondant. Vous pouvez utiliser la fonction d'objet correspondant group(num) ou groups() pour obtenir l'expression correspondante. group() ou group(0), renvoie le résultat correspondant à l'intégralité de l'expression régulière.

Exemple :

s= 'abc123abc'
print(re.match(&#39;[a-z]+&#39;, s))           # <_sre.SRE_Match object; span=(0, 3), match=&#39;abc&#39;>
print(re.match(&#39;[a-z]+&#39;, s).group(0))      # abc
print(re.match(&#39;[\d]+&#39;, s))            # None
print(re.match(&#39;[A-Z]+&#39;, s, re.I).group(0))   # abc
print(re.match(&#39;[a-z]+&#39;, s).span())       # (0, 3)

2. recherche

Instructions :

re.search scan La chaîne entière et renvoie la première correspondance réussie.

Syntaxe :

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

La méthode re.search renvoie un objet correspondant si la correspondance est réussie, sinon elle renvoie Aucun. Les expressions de correspondance peuvent être obtenues à l’aide des fonctions d’objet de correspondance group(num) ou groups().

Exemple :

s = &#39;abc123abc&#39;
print(re.search(&#39;[a-z]+&#39;, s).group())  # abc
print(re.search(&#39;[a-z]+&#39;, s).span())   # (0, 3)
print(re.search(&#39;[\d]+&#39;, s).group())   # 123
print(re.search(&#39;[\d]+&#39;, s).span())    # (3, 6)
print(re.search(&#39;xyz&#39;, s))         # None

groupdict

groupdict renvoie un dictionnaire de tous les sous-groupes nommés correspondants.

print(re.search(&#39;[a-z]+&#39;, s).groupdict())          # {}
print(re.search(&#39;(?P<letter>[a-z]+)(?P<num>\d+)&#39;, s).groupdict())  # {&#39;num&#39;: &#39;123&#39;, &#39;letter&#39;: &#39;abc&#39;}

3, sub et subn

Explication :

re.sub est utilisé pour remplacer les éléments correspondants dans la chaîne.

re.subn renvoie un tuple contenant la chaîne remplacée et le nombre de remplacements.

Syntaxe :

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

repl : La chaîne à remplacer, ou cela peut être une fonction .

count : Le nombre maximum de substitutions après la correspondance de modèle. La valeur par défaut est 0, ce qui signifie remplacer toutes les correspondances.

Exemple :

s = &#39;abc123abc&#39;
print(re.sub(&#39;[\d]+&#39;, &#39;数字&#39;, s))       # abc数字abc
print(re.sub(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))   # 字母123abc
# 将匹配的数字乘以 2
def double(matched):
    value = int(matched.group(&#39;value&#39;))
    return str(value * 2)
# repl是一个函数
print(re.sub(&#39;(?P<value>\d+)&#39;, double, s))  # abc246abc
print(re.subn(&#39;[\d]+&#39;, &#39;数字&#39;, s))        # (&#39;abc数字abc&#39;, 1)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s,))      # (&#39;字母123字母&#39;, 2)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))     # (&#39;字母123字母&#39;, 1)

4. compiler

Instructions :

re.compile Utilisation Pour compiler une expression régulière, générez un objet d'expression régulière (Pattern) à utiliser par les fonctions match() et search().

Syntaxe :

compile(pattern, flags=0)

Exemple :

s = &#39;abc123abc&#39;
p = re.compile(&#39;[\d]+&#39;)
print(p.match(s, 4, 5).group(0))    # 2 从位置4开始匹配到位置5
print(p.search(s).group(0))         # 123

5. findall

Description :

re.findall trouve toutes les sous-chaînes correspondant à l'expression régulière dans la chaîne et renvoie une liste si aucune correspondance n'est trouvée, elle renvoie une liste vide.

Syntaxe :

findall(pattern, string, flags=0)

Exemple :

s = &#39;abc123abc&#39;
print(re.findall(&#39;[a-z]+&#39;, s))  # [&#39;abc&#39;, &#39;abc&#39;]
print(re.findall(&#39;[h-n]+&#39;, s))  # []

6. finditer

Description :

finditer est similaire à findall Il recherche toutes les sous-chaînes correspondant à l'expression régulière dans la chaîne et les renvoie en tant qu'itérateur.

Syntaxe :

finditer(pattern, string, flags=0)

Exemple :

s = &#39;abc123def&#39;
it = re.finditer(&#39;[a-z]+&#39;, s)
for match in it:    print(match.group())

7. split

Description : La méthode

re.split divise la chaîne en fonction des sous-chaînes correspondantes et renvoie une liste.

Syntaxe :

split(motif, chaîne, maxsplit=0, flags=0)

maxsplit : nombre de divisions, maxsplit=1 divisé une fois, la valeur par défaut est 0, non Limiter le nombre de fois.

Exemple :

print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, re.I))           # [&#39;1A1&#39;, &#39;2A3&#39;]# 输出结果并未能区分大小写,这是因为re.split(pattern,string,maxsplit, flags)默认是四个参数,当我们传入的三个参数的时候,系统会默认re.I是第三个参数,所以就没起作用。# 如果想让这里的re.I起作用,写成flags=re.I即可。
print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, flags=re.I))     # [&#39;1&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;]

8. évasion

Explication :

re.escape Escape chaînes spéciales dans la chaîne.

Grammaire :

escape(pattern)

Exemple :

print(re.escape(&#39;www.dxy.cn&#39;))  # www\.dxy\.cn

9. >

«(?P8a11bc632ea32a57b3e3693c7987c420…)» : Regroupez-le et nommez-le 8a11bc632ea32a57b3e3693c7987c420.

«(?P=name)» : fait référence à la chaîne correspondant au groupe dont l'alias est 8a11bc632ea32a57b3e3693c7987c420.

10. Définition spéciale d'antécédent (négative)

La définition d'antécédent (?<=exp) et la définition d'antécédent négatif (?) sont couramment utilisées dans les expressions régulières. .

<.>Recommandations associées :
(?<=aaa)   # 正确
(?<=aaa|bbb) # 正确
(?<=aaa|bb) # 错误
(?<=\d+)   # 错误
(?<=\d{3})  # 正确

A quoi sert le module de journalisation en python ? Introduction à l'utilisation du module de journalisation

Introduction détaillée à l'expression régulière ré du module python

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn