[Résolu] RegEx et Notepad++

RegEx et Notepad++ [Résolu] - Divers - Programmation

Marsh Posté le 24-07-2022 à 23:50:34    

Bonjour.
 
Je ne suis pas du tout programmeur.
Mais j'ai appris qu'une expression régulière pourrait m'aider dans ce que je cherche à faire.
 
J'ai un gros fichier texte de 5/6Mio (un fichier contact CSV).
Et dedans je dois supprimer des morceaux.
Ces morceaux sont sur plusieurs lignes et différents.
Mais ils ont quand même un point commun : ils commencent par "PHOTO" en début de ligne et finissent par "Jggg==" en fin de ligne.
 
J'arrive a trouver le début de la RegEx : ^PHOTO
Et la fin de la RegEx : Jggg==$
 
Mais je ne parviens pas à les combiner pour avoir "début" + "n'importe quoi" + "fin"
 
Pour le "n'importe quoi" j'ai essayé ".*" ou "(.*)" ou "[.*]" ou "*" ou "." ou d'autres combinaisons de () de [] de . de *
Mais je ne trouve pas.
 
On peux m'expliquer ?
Merci.


Message édité par LimDul le 25-07-2022 à 21:32:54

---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 24-07-2022 à 23:50:34   

Reply

Marsh Posté le 25-07-2022 à 09:10:38    

^PHOTO.*Jggg==$
Mais je vois pas pk tu utilises notepad++ pour ça

Reply

Marsh Posté le 25-07-2022 à 10:26:19    

J’imagine qu'il fait une regex dans le rechercher remplacer de Notepad++.
 
Je t'ai fait un exemple ici :
https://regex101.com/r/nDg0JM/1
 
REGEX :  

Code :
  1. /PHOTO.*Jggg==\n/gm


AVANT :

Code :
  1. truc a garder
  2. PHOTO trucs a supprimer Jggg==
  3. PHOTO trucs a garder
  4. truc a garder Jggg==
  5. PHOTO trucs a supprimer Jggg==
  6. truc a garder


 
APRES :

Code :
  1. truc a garder
  2. PHOTO trucs a garder
  3. truc a garder Jggg==
  4. truc a garder


 
J'ai mis un \n à la fin de ton expression régulière pour capturer le saut de ligne (sinon tu auras des lignes vide) mais suivant comment ton saut de ligne est encodé il se peut qu'il faille plutôt mettre un \r ou même un \r\n...


---------------
D3
Reply

Marsh Posté le 25-07-2022 à 19:23:29    

Bonjour.
Quelle rapidité ! Bravo !

 

Je n'avais pas compris qu'il fallait juste concaténer les éléments d'une RegEx.
Je croyais qu'il fallait les séparer avec un espace ou un +

 

Oui en effet j'utilise Notepad++ pour chercher et remplacer et surtout supprimer dans le cas présent.
Hélas vos propositions ne fonctionnent pas dans Notepad++
En fait j'ai plutôt un truc de ce genre

Code :
  1. Garder
  2. Garder
  3. Garder
  4. PHOTO truc a supprimer
  5. suppr
  6. suppr
  7. suppr Jggg==
  8. Garder
  9. Garder
  10. Garder
  11. PHOTO truc a supprimer
  12. suppr
  13. suppr
  14. suppr Jggg==
  15. Garder
  16. Garder
  17. Garder
  18. PHOTO truc a supprimer
  19. suppr
  20. suppr
  21. suppr Jggg==

(Répétez le motif Ad Noseam)
Et je désire juste :

Code :
  1. Garder
  2. Garder
  3. Garder
  4. Garder
  5. Garder
  6. Garder
  7. Garder
 

J'ai essayé vos propositions mais je crois que les sauts de lignes bloquent.
J'ai testé ceci :

Code :
  1. /PHOTO.*\n*Jggg==/gm
  2. /PHOTO.*\rJggg==/gm
  3. /PHOTO.*\r\n*Jggg==/gm
  4. /PHOTO.*(\r\n)*Jggg==/gm
  5. ^PHOTO.*\r\n*Jggg==$
  6. ^PHOTO.*\r*Jggg==$
  7. ^PHOTO.*\n*Jggg==$
  8. ^PHOTO.*(\r\n)*Jggg==$


Mais rien ne fonctionne.

 

J'arrive a trouver et sélectionner les lignes
PHOTO:TYPE=JPEG;ENCODING=BASE64:iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXH
J'arrive a trouver les lignes
 c4Bg21nZeXZ8bTvfwG5FQwXjcepFwAAAABJRU5ErkJggg==
Mais pas les lignes entre les deux.


Message édité par LimDul le 25-07-2022 à 19:23:42

---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 25-07-2022 à 21:32:35    

Finalement j'ai trouvé un contournement.
J'ai remarqué que dans ce que je voulais supprimer il y avait plusieurs schémas. Et que plutôt que de faire une RegEx complique en faire 3 plus simple serait plus facile.
 
1ere :
^PHOTO:.*
2ieme :
.*Jggg==$  
3ieme :
^ .*
Car toutes les lignes que je veux retirer commencent par un espace.
 
Je remplace tout ce qui est trouvé par "rien" pour avoir des lignes vides.
Puis un rechercher/remplacer des lignes vides.
 
Et voilà !
 
Merci pour votre aide  :jap:


---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 25-07-2022 à 22:00:45    

Utilises le site que j'ai mis en lien pour mettre un copier coller de ton fichier, on vas bien réussir à te pondre une regex...
 
Après je n'ai pas Notepad++, je ne sais pas trop ce qui est compatible ou non mais on devrai trouver.
 
Y'a aussi moyen de faire une première REGEX sans les sauts de ligne puis une 2eme pour capturer les doubles saut de ligne pour les transformer en simple, c'est de la bidouille mais bon...
 
EDIT: tant mieux si tu as trouvé une solution !


Message édité par mechkurt le 25-07-2022 à 22:02:24

---------------
D3
Reply

Marsh Posté le 30-07-2022 à 10:00:28    

Dans notepad++ ceci fait le boulot :
 
https://rehost.diberie.com/Picture/Get/r/81555
 
Remplacer le \r\n par la fin de ligne appropriée à ton OS, ici c'est pour DOS/WINDOWS.
 
J'ai juste supposé que ton fichier se termine par une ligne vide, ce qui est en principe le cas pour les fichiers texte.
Si ce n'est pas le cas, et que ton fichier se termine avec une zone à supprimer, cette dernière ne le sera pas, et tu devras la sucrer manuellement.
 
L'option boucler est mise automatiquement, ou bien elle est par défaut chez moi depuis un bail, j'y ai pas touché, mais je ne suis pas sur qu'elle serve ici, si tu choisis remplacer tout. J'ai appliqué le principe "If it aien't broke, don't fix it!"
 
A+,


Message édité par gilou le 30-07-2022 à 10:05:20

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-01-2023 à 21:12:24    

Hello, je profite du topic.. ^^ Je souhaite tracer mes dépenses sur un fichier texte ou je les notes. Elles apparaisent sous le format -xxx,xx€( avec plus ou moins de x selon si c'est centaines, milliers, ou juste dizaines d'euros). Le signe € est bien a prendre en compte car dans ce fichier texte peut aussi apparaitre des numéros de commandes et autres.. Quelle serait l'expression qui conviendrait? Dites moi si je dois faire un autre topic ;)  Merci d'avance.

Message cité 1 fois
Message édité par ddong le 02-01-2023 à 21:12:58
Reply

Marsh Posté le 03-01-2023 à 10:01:17    

ddong a écrit :

Hello, je profite du topic.. ^^ Je souhaite tracer mes dépenses sur un fichier texte ou je les notes. Elles apparaisent sous le format -xxx,xx€( avec plus ou moins de x selon si c'est centaines, milliers, ou juste dizaines d'euros). Le signe € est bien a prendre en compte car dans ce fichier texte peut aussi apparaitre des numéros de commandes et autres.. Quelle serait l'expression qui conviendrait? Dites moi si je dois faire un autre topic ;)  Merci d'avance.


T'as pas dit ce que tu cherches à faire ni ce qu'il y aurait d'autre sur les mêmes lignes :o.
Fournir un exemple de fichier aidera probablement.

 

Mais pour matcher un montant en € (et rien d'autre !) sur une ligne donnée tu peux utiliser par exemple :

^-\d{1,5},\d{2}€$

 

Si tu veux que ça marche aussi avec d'autres choses sur la même ligne tu peux enlever le "^" et le "$" qui veulent dire respectivement début et fin de ligne.


Message édité par TotalRecall le 03-01-2023 à 10:02:12

---------------
Topic .Net - C# @ Prog
Reply

Sujets relatifs:

Leave a Replay

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