RegExp: remplacer le groupe matché par sa longueur

RegExp: remplacer le groupe matché par sa longueur - Divers - Programmation

Marsh Posté le 07-11-2002 à 16:59:15    

'lut,
 
je me demande si je ne cherche pas l'impossible mais bon, j'essaie quand même :)
 
RegExp: ([ ]{2,})
phrase: "Le petit chaperon      rouge"
replacement: "$1"
 
ça ça revient à ne rien faire... normal $1 correspond aux blancs qui ont été matchés...
 
je voudrais remplacer ces blancs par leur nombre... à savoir:
 
--> "Le petit chaperon6rouge"
 
on peut faire ça en regexp classique ? (sans apport de language externe...)
 
:hello:
 
edit: un titre plus parlant, c'est mieux :)


Message édité par TBone le 07-11-2002 à 18:13:16

---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
Reply

Marsh Posté le 07-11-2002 à 16:59:15   

Reply

Marsh Posté le 08-11-2002 à 14:28:37    

et bien en regexp perl je ferais comme ca:
 
$text = s/(\s{2,})/length $1/esg;
 
a toi d'adapter à ta syntaxe
 
indications:
le modifier 'e' permet d'executer la deuxieme partie de la regexp, c'est à dire length $1. il va donc rempalcer les espaces par length de ce qu'il a chopé dans $1
c'est p'tetre specifique à perl, dans ce cas je vois pas comment faire...
 
le 's' c'est pour ne pas tenir ccompte des sauts de ligne (a toi de voir...)
 
le 'g' c'est pour le faire pour chaque match trouvé dans le text

Reply

Marsh Posté le 08-11-2002 à 15:15:02    

ouaip... c'est du intégré au perl...  
j'ai fait un truc du style en Java.
 
je pensais à un "length($1)" mais je l'ai codé pour finir...
ça rajoute une fonction à mon enrichisseur XML :)
 
merci :jap:


---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed