Maison  >  Article  >  développement back-end  >  Comment remplacer correctement les correspondances par des groupes numérotés dans re.sub de Python ?

Comment remplacer correctement les correspondances par des groupes numérotés dans re.sub de Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 17:45:03920parcourir

How to Properly Replace Matches with Numbered Groups in Python's re.sub?

Groupe Python RE.Sub : Numérotation après numéro

Lors de l'utilisation d'expressions régulières en Python, la méthode re.sub peut être utilisée pour remplacer correspond à une chaîne de remplacement. Cependant, la syntaxe peut être délicate lorsque vous travaillez avec des groupes numérotés.

Une tentative mal interprétée :

Au départ, vous pourriez essayer :

<code class="python">re.sub(r'(foo)', r'23', 'foobar')</code>

On s'attend à ce que le résultat soit « foo123bar », mais à la place, il renvoie « J3bar », en remplaçant « foo » par « J3 » pour des raisons qui pourraient ne pas être immédiatement claires.

La syntaxe correcte :

Pour remplacer avec précision 'foo' par 'foo123', utilisez la syntaxe suivante :

<code class="python">re.sub(r'(foo)', r'\g<1>123', 'foobar')</code>

Voici une explication détaillée :

  • L'expression régulière ( foo) capture la sous-chaîne 'foo'.
  • La chaîne de remplacement g<1>123 fait référence à la sous-chaîne capturée et y ajoute "123".
  • g<1> est une référence de groupe numérotée, où '<1>' représente le premier groupe capturé.

Extrait de la documentation :

Selon la documentation, la syntaxe de g ou g est utilisé pour :

En plus des échappements de caractères et des références arrière... g utilisera la sous-chaîne correspondant au groupe nommé name, tel que défini par la syntaxe (?P...). g utilise le numéro de groupe correspondant.

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!

Déclaration:
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