Regex : substitution [python] - Python - Programmation
Marsh Posté le 05-07-2004 à 12:54:23
Jubijub a écrit : le \1 pointe sur ton truc entre parenthèses...donc ca : |
Il pointe plutôt sur la chaine trouvé non? Ce qui m'intéresse c'est d'obtenir la chaîne du motif trouvé pour la ré injecter modifié, d'où le r'\1'[1].upper()
Or apparemment ça ne fonctionne pas comme ça.
Marsh Posté le 05-07-2004 à 14:26:48
Ben non c'est ça le problème, je sais pas exactement ce qu'est le \1 et comment on l'exploite. Sinon le principe j'avais compris
Marsh Posté le 05-07-2004 à 14:33:49
ben par ex :
\b(\w)\w*\1\b désigne un mot qui commence et finit par la même lettre...
mais pour ton exemple je sais pas si le \1 survit à sa regexp...si ca se trouve son contenu se barre dès que tu recrée une deuxième...
Marsh Posté le 05-07-2004 à 15:25:12
Kristoph a écrit : Il est temps de sortir : http://kodos.sourceforge.net/ ! |
peux tu m'écrire un exemple de complet de ce que l'on doit reconnaitre et ce que l'on doit générer ?
J'ai du mal a comprendre.
Je te filerais volontier une soluce quand j'aurais compris, si je trouve. A priori ca a pas l'air dur mais avec les regex on sais jamais.
Marsh Posté le 05-07-2004 à 16:39:13
Oui je vais reprendre :
J'ai une ligne:
Code :
|
Si je fais un
Code :
|
J'obtiens
salutLOLesLOLopains. |
On est d'accord jusque là?
Moi je veux pas LOL, je veux qu'il me prenne le résultat identifié par mon motif. Premier .l et second .c , et qu'il mette en majuscule le l et le c TOUT CA avec la fonction re.sub. Selon moi il faut utiliser les backreferences mais j'arrive pas à la manipuler. Tout ce que j'arrive à faire c'est :
Code :
|
et j'obtiens en sortie
Code :
|
Ce qui est logique car il a trouvé .l et .c et les a ré injecté via \1 dans ma chaine.
Marsh Posté le 05-07-2004 à 18:47:46
bonjour,
chaica a écrit :
|
on ne peux pas modifier directement une référence arrière.
mais la fonction re.sub peux utiliser un objet appelable (donc une fonction) comme paramètre de remplacement. donc tu crée une fonction :
Code :
|
et voila
le_GLu
Marsh Posté le 06-07-2004 à 00:29:23
le_Glu : J'avais lu l'exemple dans le module mais j'ai pas investigué cette piste je sais pas pourquoi. Merci bcp!
Marsh Posté le 05-07-2004 à 09:44:01
Salut, je voudrais réaliser une substitution qui modifie le motif trouvé pour le ré-injécter dans la chaîne. Ci dessous le motif constitué d'un point et suivi par une lettre quelconque devrait être remplacé par un point, un espace et la lettre trouvé dans le motif désormais en majuscule.
Intuitivement j'ai écrit ça mais ça ne marche pas. Je ne saisis pas trop comment me servir de la référence arrière \1
Si vous pouvez m'apporter des précision, merci d'avance.
Message édité par chaica le 05-07-2004 à 09:46:27