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)
Cette regex correspond des chaînes qui :
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>
Cela affichera le résultat souhaité :
['start wait for it... profit! here end', 'start second match win. end']
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!