> ## Content Index
> Fetch the complete content index at: https://www.sfeir.dev/llms.txt
> Use this file to discover other available public pages before exploring further.

# La magie des fonctions dans re.sub()
- URL: https://www.sfeir.dev/back/la-magie-des-fonctions-dans-re-sub/
- Published: 2023-05-17T07:31:00.000Z
- Updated: 2023-11-02T12:00:58.000Z
- Description: Exploitez tout le potentiel de re.sub() en Python : découvrez ses fonctionnalités avancées pour des substitutions évoluées.
- Author: Alexandre Moevi
- Tags: Back, Python, Tips

Les expressions régulières (regex) sont des outils puissants pour la recherche et la manipulation de motifs dans les chaînes de caractères. En Python, le module `re` fournit différentes fonctions pour travailler avec les regex, y compris la fonction `re.sub()`. Cette dernière est utilisée pour substituer les occurrences d'un motif dans une chaîne de caractères par une valeur de remplacement spécifiée.

La signature de la fonction `re.sub()` est la suivante :

```python
re.sub(motif, remplacement, chaîne[, count, flags])
```

Ici, `motif` représente le motif d'expression régulière à rechercher et `chaîne` est la chaîne de caractères en entrée, et `remplacement` peut être une chaîne de caractères. La fonction accepte aussi deux arguments optionnels `count` et `flags`.

Bien que la plupart des développeurs soient familiers avec l'utilisation de `re.sub()` avec une chaîne de caractères comme `remplacement`, on peut donner en paramètre une fonction. Cette fonctionnalité puissante permet des substitutions dynamiques et complexes basées sur le `motif` correspondant.

Prenons un exemple pour illustrer la puissance de l'utilisation d'une fonction. Considérons le scénario suivant : vous avez une chaîne de caractères qui contient différentes dates au format "AAAA-MM-JJ", et vous souhaitez remplacer chaque date par le jour de la semaine correspondant.

```python
import re
from datetime import datetime

def remplacer_date(match):
    date_str = match.group()
    date_obj = datetime.strptime(date_str, '%Y-%m-%d')
    jour_semaine = date_obj.strftime('%A')
    return jour_semaine

texte = "Aujourd'hui c'est 2023-05-17. Demain ce sera 2023-05-18."

resultat = re.sub(r'\d{4}-\d{2}-\d{2}', remplacer_date, texte)

print(resultat)
```

Dans cet exemple, nous définissons une fonction appelée `remplacer_date()` qui prend un objet de correspondance en argument. L'objet de correspondance contient des informations sur le motif correspondant, y compris la chaîne de date. Pour voir le détail de l'objet `match`, on peut changer le corps de la fonction comme ceci :

```python
def remplacer_date(match):
    print(match)
    print(match.group())
    
# <re.Match object; span=(18, 28), match='2023-05-17'>
# 2023-05-17
```

Ensuite, nous utilisons la fonction `datetime.strptime()` pour convertir la chaîne de date en un objet de date et nous retournons le jour de la semaine avec l'aide de la fonction `strftime()`. 

Lorsque nous appelons `re.sub()` avec la fonction `remplacer_date` comme argument de remplacement, celle-ci est appliquée à chaque correspondance dans la chaîne de caractères en entrée. Ainsi, `2023-05-17` et `2023-05-18` sont remplacées par le jour de la semaine correspondant. La chaîne de caractères résultante sera donc :

```python
print(resultat)
# "Aujourd'hui c'est mardi. Demain ce sera mercredi."
```

Comme vous pouvez le constater, l'utilisation d'une fonction au lieu d'une chaîne de caractères comme remplacement élargit les possibilités de manipulation de texte avec les expressions régulières en Python.

La prochaine fois que vous aurez besoin d'effectuer des substitutions complexes ou dynamiques, n'oubliez pas la puissance de `re.sub()`.

Pour découvrir davantage, voici le lien vers la documentation officielle du module `re`.

[re — Opérations à base d’expressions rationnellesCode source : Lib/re/ Ce module fournit des opérations sur les expressions rationnelles similaires à celles que l’on trouve dans Perl. Les motifs, comme les chaînes, à analyser peuvent aussi bien ê…![](https://docs.python.org/fr/3/_static/py.svg)Python documentation![](https://docs.python.org/3/_static/og-image.png)](https://docs.python.org/fr/3/library/re.html?ref=sfeir.dev)

Python regorge d'autres mécanismes tout aussi impressionnants. Par exemple, saviez vous comment le mot-clé `with` fonctionne en coulisse et comment créer vos propres gestionnaires de contexte ?

[Au-delà du “with”: les gestionnaires de contextePlongeons dans les gestionnaires de contexte en Python. L’instruction with n’aura plus de secret pour vous !![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/size/w256h256/2023/03/AXO_GOOD-2.png)sfeir.devAlexandre Moevi![](https://images.unsplash.com/photo-1457694587812-e8bf29a43845?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEyfHxkb2N1bWVudHxlbnwwfHx8fDE2ODgyMjIzMzd8MA&ixlib=rb-4.0.3&q=80&w=2000)](https://www.sfeir.dev/back/au-dela-du-with-les-gestionnaires-de-contexte-en-python/)