[R] Supprimer des éléments dans un fichier text

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[R] Supprimer des éléments dans un fichier text

#1

Message 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
Modifié en dernier par franco le sam. 23 nov. 2013 11:28, modifié 1 fois.
L'entraide, c'est mon dada ;)
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

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

#2

Message par matwachich »

Code : Tout sélectionner

StringRegExpReplace($sTexte, '\[color=.+?\]', '')
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#3

Message 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é


@+
L'entraide, c'est mon dada ;)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

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

#4

Message 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"))
 
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#5

Message 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 ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

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

#6

Message par matwachich »

Bah si il y a des espaces

Code : Tout sélectionner

'\[\h*?color\h*?=\h*?.+?\h*?\]'
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#7

Message 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é :)

@+
Modifié en dernier par mikell le mar. 04 sept. 2012 09:19, modifié 1 fois.
Raison : suppression des citations
L'entraide, c'est mon dada ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#9

Message 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 ;)

@+
Modifié en dernier par mikell le mar. 04 sept. 2012 13:37, modifié 1 fois.
Raison : suppression de la citation (inutile)
L'entraide, c'est mon dada ;)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#10

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#11

Message 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 ;)



++
L'entraide, c'est mon dada ;)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#12

Message 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\])', ''))
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#13

Message 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é ;)



++
L'entraide, c'est mon dada ;)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

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

#14

Message 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 ^^
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#15

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#16

Message 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.
L'entraide, c'est mon dada ;)
Répondre