


méthode python pour extraire une chaîne à l'aide d'une expression régulière
Avant-propos
Je ne parlerai pas des connaissances de base des expressions régulières. Si vous êtes intéressé, vous pouvez cliquer ici. Il existe généralement deux cas d'extraction. L'un consiste à extraire des caractères. une seule position dans le texte, l'autre consiste à extraire des chaînes avec plusieurs positions consécutives. L'analyse des journaux rencontrera cette situation et je parlerai des méthodes correspondantes ci-dessous.
1. Extraction de chaîne à une seule position
Dans ce cas, nous pouvons utiliser l'expression régulière (.+?) pour extraire. Par exemple, pour une chaîne "a123b", si l'on veut extraire la valeur 123 entre ab, on peut utiliser findall avec une expression régulière, qui renverra une liste contenant toutes les situations correspondantes.
Le code est le suivant :
import re str = "a123b" print re.findall(r"a(.+?)b",str)# 输出['123']
1.1 Correspondance gourmande et non gourmande
Si on a une chaîne "a123b456b", si on veut faire correspondre a et la dernière Toutes les valeurs entre a b au lieu des valeurs entre a et la première occurrence de b peuvent être utilisées 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']
1.2 Correspondance multi-lignes
Si vous souhaitez une correspondance multi-lignes, vous devez ajouter le re. Drapeaux S et re.M. Après avoir ajouté re.S. Correspondra aux caractères de nouvelle ligne, par défaut. Ne correspondra pas aux caractères de nouvelle ligne.
Le code est le suivant :
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输出[('23', '34')]
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) #输出['23'] re.findall(r"^a(\d+)b", str, re.M) #输出['23', '34']
2. Extraction de chaîne à plusieurs positions consécutives
Dans ce cas, nous pouvons utiliser
(?P<name>…)
Cette expression régulière à 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"'
, et que nous voulons extraire tout le contenu de cette ligne de journal, nous pouvons écrire plusieurs
(?P<name>expr)
à extraire, où nom Vous pouvez le remplacer par la variable que vous avez nommée pour la chaîne de position, et expr peut être remplacé par l'expression régulière pour extraire la position.
Le code est le suivant :
import re line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"' reg = re.compile('^(?P<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)" (?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"') regMatch = reg.match(line) linebits = regMatch.groupdict() print linebits for k, v in linebits.items() : print k+": "+v
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
Résumé
Ce qui précède représente l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter de l'aide aux études ou au travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. .
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

Fastapi ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...
