Code regex python

Fermé
visit - 17 janv. 2017 à 20:34
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 21 janv. 2017 à 11:45
Bonjour,
j'ai un fichier dans lequel il y a cette expression:
width:234px

le but est de remplacer par: width: (234/2)px

pouvez-vous me donner un exemple de code simple.
A voir également:

1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 janv. 2017 à 20:53
Bonsoir

pour trouver width:3Chiffrespx
la syntaxe est
width:(\d{3})px 

Tu peux donner un nom à la capture (MesChiffres par exemple)
width:(?<MesChiffres>\d{3})px 


S'il peut y avoir entre 2 et 4 chiffres (par exemple)
width:(?<MesChiffres>\d{2,4})px 


S'il y a au moins un chiffre, mais tu ne sais pas combien au mximun
width:(?<MesChiffres>\d+)px 


On peut aussi faire une Regex qui trouve entre 127 et 3456, etc.... plus ta spécification est précise et plus la Regex le sera.

Tu peux t'amuser à tester en ligne, il y a ces quelques sites
http://regexstorm.net
https://regex101.com
http://www.pyregex.com/
etc...

Après comment implémenter le remplacement en Python, je ne sais pas.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 21/01/2017 à 11:49
on peut faire comme cela :

import re
st = "width:234px"
st = re.sub('^width:(\d+)px', 'width:(\\1/2)px', st)
print(st)

donne :

$ python3 visit.py
width:(234/2)px

Les parenthèses dans la regexp forment un groupe de capture identifié par \1 (s'il y en a d'autres, les expressions capturées seront identifiées \2, \3, etc.), qu'il est possible d'utiliser dans le 2ème argument de re.sub (avec échappement sauf si la string est raw)

Dal
0