Menu

Remplacer la dernière espace d'une ligne par tabu. [Résolu]

Messages postés
3264
Date d'inscription
mercredi 20 septembre 2006
Dernière intervention
10 novembre 2018
- 14 juin 2018 à 06:31 - Dernière réponse :
Messages postés
3264
Date d'inscription
mercredi 20 septembre 2006
Dernière intervention
10 novembre 2018
- 16 juin 2018 à 14:54
Bonjour,
L'ensemble des lignes d'un fichier contiennent quelque chose comme
Poudre de perlimpinpin 13,65
Boniments en tous genres 2384,90
Demain, on rase gratis : 0,00

dans lesquelles je voudrais remplacer, par une commande Rechercher et remplacer , la dernière espace, celle avant le montant, par un caractère de tabulation.
Je ne domine pas suffisamment les regex pour trouver l'expression adéquate, une bonne âme pour m'aider ?
Merci d'avance.

Afficher la suite 

Votre réponse

4 réponses

Messages postés
14705
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 14 juin 2018 à 15:39
0
Merci
Bonjour,

Si tout ton document est fabriqué comme ça, et s'il n'y a pas d'autres chiffres que ceux mis comme tu montres, ce n'est pas compliqué, mais faut être sûr de son coup et de préférence travailler sur une copie.

Donc, d'abord tu coches l'option "Caractères génériques".
Pour la recherche, tu mets : ([0-9])
je précise que ça commence par une espace : espace([0-9])

Pour le remplacement, tu mets :
^t\1

m@rina
Commenter la réponse de m@rina
Messages postés
3264
Date d'inscription
mercredi 20 septembre 2006
Dernière intervention
10 novembre 2018
- Modifié par telliak le 14/06/2018 à 18:42
0
Merci
Bonsoir M@rina,
Merci de ton aide.
s'il n'y a pas d'autres chiffres Malheureusement, d'autres chiffres peuvent figurer aléatoirement dans les lignes. :(
Pour ce qui est de travailler sur une copie, pas de crainte à avoir.
Par ailleurs, je me suis aperçu qu'une espace sépare les milliers.

Entre temps, j'ai progressé (au-delà de mes espérances) et je m'en sors avec cette épicerie-la, en jouant sur la virgule séparatrice :
 > ([0-9]{3}) ([0-9]{3}),([0-9]{2})< : >^t-\1\2\3< Centaines de milliers d'euros
> ([0-9]{2}) ([0-9]{3}),([0-9]{2})< : >^t-\1\2\3< Dizaines de milliers d'euros
> ([0-9]{1}) ([0-9]{3}),([0-9]{2})< : >^t-\1\2\3< Milliers d'euros
> ([0-9]{3}),([0-9]{2})< : >^t-\1\2< Centaines d'euros
> ([0-9]{2}),([0-9]{2})< : >^t-\1\2< Dizaines d'euros
> ([0-9]{1}),([0-9]{2})< : >^t-\1\2< Euros
> ([0]),([0-9]{2})< : >^t-\1\2< Centimes

les chaînes entre >< représentant les valeurs des champs Rechercher et Remplacer par.
Intellectuellement et esthétiquement parlant, c'est moyen.
Mon problème est que je n'ai pas trouvé comment spécifier que la «liste» (désolé, je n'ai pas le vocabulaire) [0-9] est à appliquer pour 1, 2 ou 3 occurrences, quelque chose comme ([0-9]{1|2|3}).
Par ailleurs cela impose que le montant soit en fin de ligne, mais cela ne me gêne pas.
:-*
Commenter la réponse de telliak
Messages postés
14705
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 15 juin 2018 à 01:44
0
Merci
Hello Telliak

Désolée, j'avais pas vu que tu étais l'auteur de la question !! je suis confuse...

A titre d'info, pour spécifier le nombre d'occurrence, tu peux juste mettre le signe @.
Par exemple :
([0-9]@)(,) va chercher tous les groupes de chiffres suivis d'une virgule, et donc 1, mais aussi 10, 100, et 1000,.

Mais c'est sûr que du coup, l'espace des milliers va poser problème. Est-ce que les milliers ont toujours une espace ? Et est-ce une espace insécable ?
Et y a-t-il toujours une virgule pour la séparation des centimes ?

Si la réponse oui pour l'espace, tu peux au moins le faire en trois fois assez rapidement :
Une première fois en cherchant les nombres avec des milliers, et en supprimant l'espace.
Ensuite une recherche avec ([0-9]@)(,)
et enfin, une recherche sur les milliers pour remettre l'espace.

m@rina


Commenter la réponse de m@rina
Messages postés
3264
Date d'inscription
mercredi 20 septembre 2006
Dernière intervention
10 novembre 2018
- 16 juin 2018 à 14:54
0
Merci
Hi,
C'est réglé !
Je n'avais pas compris l'utilisation du @ — celui de M@rina... :-) —.
Je m'en sors désormais avec trois commandes seulement et cela me convient bien :
> ([0-9]@) ([0-9]{@}),([0-9]{2})< : >^t-\1\2\3 < Milliers d'euros
> ([0-9]@),([0-9]{2})< : >^t-\1\2\3< Euros
> ([0]),([0-9]{2})< : >^t-\1\2< Centimes

Merci encore de ton aide. et bon vékende.
Commenter la réponse de telliak