Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2798 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Résolu] RegEx et Notepad++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] RegEx et Notepad++

n°2422698
LimDul
Comment ça j'ai tort ?
Posté le 24-07-2022 à 23:50:34  profilanswer
 

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"
mood
Publicité
Posté le 24-07-2022 à 23:50:34  profilanswer
 

n°2422702
Je@nb
Kindly give dime
Posté le 25-07-2022 à 09:10:38  profilanswer
 

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

n°2422717
mechkurt
Posté le 25-07-2022 à 10:26:19  profilanswer
 

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
n°2422755
LimDul
Comment ça j'ai tort ?
Posté le 25-07-2022 à 19:23:29  profilanswer
 

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"
n°2422757
LimDul
Comment ça j'ai tort ?
Posté le 25-07-2022 à 21:32:35  profilanswer
 

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"
n°2422758
mechkurt
Posté le 25-07-2022 à 22:00:45  profilanswer
 

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
n°2423099
gilou
Modérateur
Modzilla
Posté le 30-07-2022 à 10:00:28  profilanswer
 

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é!  --
n°2437042
Ddong
Posté le 02-01-2023 à 21:12:24  profilanswer
 

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
n°2437059
TotalRecal​l
Posté le 03-01-2023 à 10:01:17  profilanswer
 

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

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Résolu] RegEx et Notepad++

 

Sujets relatifs
Regex récupérer valeur à partir d'un caractèrestd::regex_replace
Regex commence par, finit par, et contient[LUA] - [RESOLU] - Regex - string.match() qui match à moitié...
Cherche regex spécifiqueAide RegEx pour extraire une sous chaine entre crochet
Soucis Regex et string.search javascriptNettoyage HTML avec regex negative lookahead
REGEX besoin d'aideRegex pour nombres
Plus de sujets relatifs à : [Résolu] RegEx et Notepad++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR