Correspondances Regex superposées : trouver chaque série de nombres
Introduction
La question se pose de comment localiser chaque série de nombres à 10 chiffres qui se chevauchent au sein d'une plus grande collection de nombres à l'aide du module « re » en Python 2.6. Bien que les correspondances qui ne se chevauchent pas soient simples, extraire toutes les occurrences s'avère difficile.
Solution
Pour résoudre ce problème, un groupe de capture peut être utilisé dans le cadre d'une analyse prospective. L'anticipation identifie les séquences souhaitées, mais la correspondance réelle correspond à la sous-chaîne de largeur nulle qui la précède, garantissant ainsi l'absence de chevauchement. correspondances.
Mise en œuvre
import re s = "123456789123456789" matches = re.finditer(r'(?=(\d{10}))', s) results = [int(match.group(1)) for match in matches]
Sortie
[1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789]
Explication
L'expression régulière (?=(d{10})) affirme qu'immédiatement à sa droite se trouve un groupe de capture représentant une série numérique à 10 chiffres (d{10}). L'anticipation ne consomme aucun caractère, donc les correspondances réelles sont les sous-chaînes de longueur nulle précédant les anticipations, qui sont les séries individuelles à 10 chiffres.
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!