Maison > développement back-end > Tutoriel Python > Comment faire correspondre une chaîne avec une expression régulière Python ?

Comment faire correspondre une chaîne avec une expression régulière Python ?

coldplay.xixi
Libérer: 2020-06-13 15:49:21
original
11151 Les gens l'ont consulté

Comment faire correspondre une chaîne avec une expression régulière Python ?

Comment faire correspondre une chaîne avec une expression régulière Python ?

Comment faire correspondre des chaînes avec des expressions régulières Python :

1. Correspondance de chaînes à une seule position

Dans ce cas, nous pouvons. utilisez cette expression régulière (.+?) pour extraire Par exemple, une chaîne "a123b", si nous voulons extraire la valeur 123 entre ab, nous pouvons utiliser findall avec l'expression régulière, qui renverra une chaîne contenant pour qu'elle corresponde. la liste des situations, le code est le suivant :

import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#
输出['123']
Copier après la connexion

1.1 Correspondance gourmande et non gourmande

Si on a une chaîne "a123b456b", si on veut faire correspondre toutes les valeurs entre un et le dernier b et La valeur entre non-a et la première occurrence de b peut être utilisée pour contrôler la correspondance gourmande et non gourmande régulière. Le code est le suivant :

import re
str = "a123b456b"
print re.findall(r"a(.+?)b", str)
#输出['123']#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况
print re.findall(r"a(.+)b", str)
#输出['123b456']
print re.findall(r"a(.*)b", str)
#输出['123b456']
Copier après la connexion

1.2 Correspondance multiligne<🎜. >

Si vous souhaitez faire correspondre plusieurs lignes, vous devez ajouter les indicateurs re.S et re.M. Après avoir ajouté re.S, . comme suit :

str = "a23b\na34b"
re.findall(r"a(\d+)b.+a(\d+)b", str)
#输出[]
#因为不能处理str中间有\n换行的情况
re.findall(r"a(\d+)b.+a(\d+)b", str, re.S)
#s输出[(&#39;23&#39;, &#39;34&#39;)]
Copier après la connexion

Après avoir ajouté re.M, la marque ^$ correspondra à chaque ligne. Par défaut, ^ et $ ne correspondront qu'à la première ligne. Le code est le suivant :

str = "a23b\na34b"
re.findall(r"^a(\d+)b", str)
#输出[&#39;23&#39;]
re.findall(r"^a(\d+)b", str, re.M)
#输出[&#39;23&#39;, &#39;34&#39;]
Copier après la connexion
<🎜. >2. Correspondance de chaîne dans plusieurs positions consécutives

Dans ce cas, nous pouvons utiliser l'expression régulière (?P...) pour extraire Par exemple, si nous avons une ligne de journal d'accès au serveur Web : '192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"', nous voulons extraire tout le contenu dans cette ligne de journal, nous pouvons écrire plusieurs (?Pexpr ) à extraire, où name peut être remplacé par la variable que vous avez nommée la chaîne à cette position, et expr peut être remplacé par l'expression régulière de la position d'extraction. Le code est le suivant :

import re
line =&#39;192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" 
"Mozilla/5.0"&#39;
reg = re.compile(&#39;^(?P<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)" 
(?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"&#39;)
regMatch = reg.match(line)
linebits = regMatch.groupdict()
print linebits
for k, v in linebits.items() :
    print k+": "+v
Copier après la connexion

Le résultat de sortie est :

status: 200
referrer:  
request: GET /api HTTP/1.1
user_agent: Mozilla/5.0
date: 25/Oct/2012:14:46:34size: 44
remote_ip: 192.168.0.1
Copier après la connexion

Tutoriel recommandé : "

tutoriel vidéo 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal