Remplacer la dernière espace d'une ligne par tabu.

Résolu/Fermé
telliak Messages postés 3667 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 4 novembre 2024 - Modifié le 14 juin 2018 à 06:43
telliak Messages postés 3667 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 4 novembre 2024 - 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.

A voir également:

4 réponses

m@rina Messages postés 21209 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 25 décembre 2024 11 372
14 juin 2018 à 15:39
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
0
telliak Messages postés 3667 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 4 novembre 2024 876
Modifié le 14 juin 2018 à 18:42
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.
:-*
0
m@rina Messages postés 21209 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 25 décembre 2024 11 372
15 juin 2018 à 01:44
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


0
telliak Messages postés 3667 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 4 novembre 2024 876
16 juin 2018 à 14:54
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.
0