Problème :
Lors de l'utilisation de re.findall pour faire correspondre un modèle d'expression régulière, pourquoi ne récupère-t-il pas toutes les correspondances qui se chevauchent ? Par exemple, dans la chaîne "hello", pourquoi l'expression régulière r'ww' correspond-elle uniquement à "he" et "ll" mais pas à "el" et "lo" ?
Réponse :
Par défaut, re.findall ne génère pas de correspondances qui se chevauchent. Pour y parvenir, utilisez une assertion d'anticipation, une puissante fonctionnalité d'expression régulière.
Solution :
# Using a lookahead assertion matches = re.findall(r'(?=(\w\w))', 'hello') # Output: ['he', 'el', 'll', 'lo']
La construction (?=...) dans l'expression régulière est une assertion prospective. Il correspond si le modèle spécifié apparaît immédiatement après la position actuelle, mais il ne consomme aucun caractère de la chaîne. Dans ce cas, il identifie toutes les séquences de deux caractères ("ww") dans "hello" sans consommer aucun caractère.
Explication :
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!