Maison > développement back-end > Tutoriel Python > Comment extraire les correspondances entre deux chaînes dans les journaux avec une expression régulière ?

Comment extraire les correspondances entre deux chaînes dans les journaux avec une expression régulière ?

Mary-Kate Olsen
Libérer: 2024-10-23 22:17:02
original
898 Les gens l'ont consulté

How to Extract Matches Between Two Strings in Logs with a Regex?

Regex pour extraire les correspondances entre deux chaînes

Étant donné un fichier journal volumineux contenant des chaînes multilignes entourées de marqueurs de début et de fin spécifiques, le l'objectif est d'extraire et d'imprimer uniquement les chaînes les plus courtes. Cependant, le marqueur de début est utilisé ailleurs dans le fichier, donc une simple regex ne suffira pas.

Pour résoudre ce problème, nous pouvons utiliser l'expression régulière suivante :

(start((?!start).)*?end)
Copier après la connexion

Cette regex correspond des chaînes qui :

  • Commencez par "start" suivi de caractères qui ne contiennent pas "start".
  • Terminez par "end".

Utilisation Méthode re.findall de Python avec le modificateur de ligne unique (re.S), nous pouvons récupérer toutes ces chaînes à partir du fichier d'entrée :

<code class="python">import re

text = """
start spam
start rubbish
start wait for it...
    profit!
here end
start garbage
start second match
win. end
"""

matches = re.findall('(start((?!start).)*?end)', text, re.S)
print(matches)</code>
Copier après la connexion

Cela affichera le résultat souhaité :

['start wait for it...
    profit!
here end', 'start second match
win. end']
Copier après la connexion

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!

source:php
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal