Page 1 sur 1
[R] Supprimer des éléments dans un fichier text
Posté : lun. 03 sept. 2012 21:31
par franco
Bonjour à toutes et à tous
J'ai juste un soucis...
D'ordinaire, je supprime des éléments, dans un fichier text, en utilisant cette commande :
_ReplaceStringInFile

Mais là, il faut que je supprime quelque chose du genre :
X étant évolutif, et peut comporter soit un mot, soit un nombre, précédé de #
=> en gros la balise bbcode couleur
Je voulais utiliser la commande suivante, StringRegExpReplace
Mais j'ai toujours du mal avec les "regexp"
pouvez-vous m'aider à comprendre ces fameux regexp ?
@+ et merci de m'avoir lu
Re: [..] Supprimer des éléments dans un fichier text
Posté : lun. 03 sept. 2012 22:00
par matwachich
Re: [..] Supprimer des éléments dans un fichier text
Posté : lun. 03 sept. 2012 22:27
par franco
Salut matwachich et merci de m'avoir répondu
Cela ne marche pas : il me reste
Je regarde de mon coté
@+
Re: [..] Supprimer des éléments dans un fichier text
Posté : lun. 03 sept. 2012 23:39
par PandiPanda
sinon ce pattern a l'arrache? ^^
Code : Tout sélectionner
$str = "[color=Red]"&@CRLF&"[color=x]"&@CRLF&"[color=x]"
MsgBox(0,"",StringRegExpReplace($str,'(\[color=)(.*)(\])',"$1$3"))
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 00:46
par mikell
Vraiment à l'arrache
Mais heu marche super-bien le pattern de mat
Code : Tout sélectionner
$str = "a [color=Red]b" &@CRLF& "c[color=#0xffffff] d" &@CRLF& "e[color=#tagada] f"
MsgBox(0,"", StringRegExpReplace($str, '(?s)\[color=.+?\]', ''))
y aurait pas des espaces qui pourraient se glisser sournoisement dans un
?
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 05:54
par matwachich
Bah si il y a des espaces
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 09:19
par franco
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 09:21
par Tlem
En ce qui me concerne, ceci fonctionne dans toutes les conditions (testées) :
Code : Tout sélectionner
$str1 = "<gras>[color=#0000FF]/!\"
$str2 = "<gras>[color =#0000FF]/!\"
$str3 = "<gras>[ color=#0000FF]/!\"
$str4 = "<gras>[ color =#0000FF]/!\"
$str5 = "<gras>[color= #0000FF]/!\"
$str6 = "<gras>[color=#0000FF ]/!\"
$str7 = "<gras>[color= #0000FF ]/!\"
$str8 = "<gras>[ color = #0000FF ]/!\"
$str9 = "<gras>[ color = #0000FF ]/!\"
For $i = 1 to 9
MsgBox(0,"", StringRegExpReplace(Eval("str"& $i), '(?s)\[\h*?color\h*?=.+?\]', ''))
Next
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 13:37
par franco
Salut
Cela ne marche pas...
Et je déteste ne pas comprendre pourquoi
En gros, pour
:
- je ne connais pas ce qu'il y a avant
- Je ne connais pas X
- Je ne connais pas ce qu'il y a après
Je dois avoir un truc qui cloche 
Bref, je me remet à rechercher
Merci Tlem de ton aide 
@+
Re: [..] Supprimer des éléments dans un fichier text
Posté : mar. 04 sept. 2012 13:43
par mikell
franco a écrit :En gros, pour
:
- je ne connais pas ce qu'il y a avant c'est pas grave !
- Je ne connais pas X c'est pas grave !
- Je ne connais pas ce qu'il y a après c'est pas grave !
L'intérêt des regexp c'est justement de pouvoir travailler sur des strings de contenu variable ou mal défini
Là ça serait intéressant que tu postes un exemple du fichier txt à traiter, parce que chez nous tous les codes précédents marchent bien
Re: [..] Supprimer des éléments dans un fichier text
Posté : mer. 05 sept. 2012 10:09
par franco
Salut mikell ainsi qu'aux autres

Je dois être maudit
J'ai crée
deux fichiers :
(ps : les espaces dans les balises sont là pour montrer ce que contient le fichier

)
Dans les deux fichiers, toutes les balises color n'est pas supprimée =>
Que faut-il que je fasse pour qu'elle soit supprimée ?
Merci en tout cas de l'aide que vous m'apportez 
++
Re: [..] Supprimer des éléments dans un fichier text
Posté : mer. 05 sept. 2012 14:11
par mikell
Je vais te faire une peine immense ...
Chez moi ceci marche très bien
Code : Tout sélectionner
$str1 = BinaryToString(InetRead("http://cjoint.com/12sp/BIfkbJqYgjG_combofix.txt"), 1)
MsgBox(0,"1", StringRegExpReplace($str1, '(?s)(\[color=.+?\])|(\[/color\])', ''))
Re: [..] Supprimer des éléments dans un fichier text
Posté : mer. 05 sept. 2012 14:45
par franco
Salut
Cela marche chez moi aussi
Mais quand j'essaye d'appliquer ceci directement sur le fichier, cela ne marche pas.
J'ai trouvé quelque chose
Je vous en ferais par une fois terminée
Ce code fonctionne :
Code : Tout sélectionner
$fichier = @DesktopDir & "\balise color.txt"
$file = @DesktopDir & "\balise color1.txt"
$str1 = BinaryToString(FileRead($fichier))
;~ MsgBox(0,"1", StringRegExpReplace($str1, '(?s)(\[color=.+?\])|(\[/color\])', ''))
filewrite($file,stringRegExpReplace($str1, '(?s)(\[color=.+?\])|(\[/color\])', ''))
ShellExecute($file)
Par contre, ce code ne fonctionne pas
Code : Tout sélectionner
$fichier = @DesktopDir & "\balise color.txt"
$file = @DesktopDir & "\balise color1.txt"
filecopy($fichier,$file,1)
stringRegExpReplace($file, '(?s)(\[color=.+?\])|(\[/color\])', '')
ShellExecute($file)
A n'y rien comprendre xD
Je vais donc prendre le code qui fonctionne
==> même si je n'aime pas comprendre pourquoi un simple
stringRegExpReplace($file, '(?s)(\[color=.+?\])|(\[/color\])', '') ne fonctionne pas ^^
Merci beaucoup en tout cas, du temps que vous m'avez consacré
++
Re: [..] Supprimer des éléments dans un fichier text
Posté : mer. 05 sept. 2012 15:34
par PandiPanda
bha c'est simple ...
la fonction stringRegExpReplace() retourne la chaine que vous voulez elle la RETOURNE, elle n'agit pas directement sur l'objet en question !
Dans le code qui "fonctionne", vous utiliser la "chaine retournée" et ecriver dans un fichier via filewrite()
Dans le code qui "ne fonctionne pas", vous appeler la fonction, mais en aucun cas n'utiliser la valeur qu'elle retourne en gros c'est du travail inutile ... executer ce script sans le stringregexp() revien au même ^^
Re: [..] Supprimer des éléments dans un fichier text
Posté : mer. 05 sept. 2012 20:01
par mikell
Complément illustré à l'explication exacte mais un peu obscure du Panda
Code : Tout sélectionner
$file = @DesktopDir & "\balise color1.txt"
Msgbox(0,"", stringRegExpReplace([color=#FF0000]$file[/color], '(?s)(\[color=.+?\])|(\[/color\])', '') ) ; marche pas
Msgbox(0,"", stringRegExpReplace([color=#FF0000]FileRead($file)[/color], '(?s)(\[color=.+?\])|(\[/color\])', '') ) ; marche
Re: [..] Supprimer des éléments dans un fichier text
Posté : sam. 23 nov. 2013 11:27
par franco
Salut.
Toutes mes excuses pour ce retard (énorme) :
http://www.autoitscript.fr/forum/viewto ... 060#p83060
Bref, je tiens à remercier tout le monde, car l'aide dont j'ai bénéficié, m'a aidé à résoudre cela.
Merci.