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
:arrow: Mais j'ai toujours du mal avec les "regexp" :lol:


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

Code : Tout sélectionner

StringRegExpReplace($sTexte, '\[color=.+?\]', '')

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
matwachich a écrit :

Code : Tout sélectionner

StringRegExpReplace($sTexte, '\[color=.+?\]', '')
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 :mrgreen:
Mais heu marche super-bien le pattern de mat :shock:

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

Code : Tout sélectionner

'\[\h*?color\h*?=\h*?.+?\h*?\]'

Re: [..] Supprimer des éléments dans un fichier text

Posté : mar. 04 sept. 2012 09:19
par franco
Salut à tous

Il n'y a pas d'espace dans la balise

:arrow: Par contre, j'ai ceci dans le fichier <gras>/!\
sachant que X est variable...

:?: Je me pose cette question :
le fait qu'il n'y a pas d'espace entre <gras> et [color...] et entre [color...] et /!\ => Est ce que le problème peut venir de là ?

:arrow: Est-ce qu'il existe un lien qui explique les regexp, à quoi cela correspond ? car je cherche, mais je n'en trouive pas :)

Merci d'avoir répondu et de vos prochaines réponses.

Je vais chercher de mon côté :)

@+

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 :mrgreen:

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 :D

:arrow: Je dois être maudit :mrgreen:

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 :mrgreen:
==> 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.