[R] Suppression de texte entre deux mots spécifiques

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
EvilRyu
Niveau 2
Niveau 2
Messages : 28
Enregistré le : dim. 28 déc. 2008 18:16
Status : Hors ligne

[R] Suppression de texte entre deux mots spécifiques

#1

Message par EvilRyu »

Bonjour à tous!

J'ai un fichier test.txt dans lequel il y a ce texte:
Blablabla blablabla blabla et hop ici le texte à supprimer youpla blabla blablaa blabla
Blablablabla blablablabla blablablabla blablablablablabla blablablablabla blablablablabla blablablablablabla
Blablabla blablab blablabla et hop encore un texte à supprimer youpla blablablablabla
Blablablabla blablablabla blablablabla blablablablablabla blablablablabla blablablablabla blablablablablabla
Blablabla et hop le dernier texte à supprimer youpla blablablablabla.

Je voudrais donc supprimer les textes situés entre et hop et youpla, ainsi que ces deux mots eux-mêmes! Ces mots seront toujours les mêmes.

J'ai tenté quelques scripts glanés par ci par là, mais sans succès. Je me tourne donc vers vous, en espérant que vous aurez le temps de me concocter un petit quelque chose :oops:

Merci! :roll:
Modifié en dernier par EvilRyu le mer. 11 juin 2014 22:37, modifié 1 fois.
Image
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#2

Message par jchd »

Quelque chose comme ça ?

Code : Tout sélectionner

Local $sText =  "Blablabla blablabla blabla et hop ici le texte à supprimer youpla blabla blablaa blabla" & @CRLF & _
                "Blablablabla blablablabla blablablabla blablablablablabla blablablablabla blablablablabla blablablablablabla" & @CRLF & _
                "Blablabla blablab blablabla et hop encore un texte à supprimer youpla blablablablabla" & @CRLF & _
                "Blablablabla blablablabla blablablabla blablablablablabla blablablablabla blablablablabla blablablablablabla" & @CRLF & _
                "Blablabla et hop le dernier texte à supprimer youpla blablablablabla."

ConsoleWrite(StringRegExpReplace($sText, "(et hop.*?youpla )", "") & @LF)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
EvilRyu
Niveau 2
Niveau 2
Messages : 28
Enregistré le : dim. 28 déc. 2008 18:16
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#3

Message par EvilRyu »

Merci de ta réponse!

Le texte se trouve sur un fichier extérieur, mais on ne dirait pas que le script fonctionne dessus :?

Voici ce que j'ai actuellement:

Code : Tout sélectionner

$szFile = @ScriptDir & "/fichier.txt"
$szText = FileRead($szFile,FileGetSize($szFile))

$szText = (StringRegExpReplace($szText, "(et hop.*?youpla)", "") & @LF)

FileDelete($szFile)
FileWrite($szFile,$szText)

 
Image
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#4

Message par jguinch »

Ca marche plutôt bien pourtant...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
EvilRyu
Niveau 2
Niveau 2
Messages : 28
Enregistré le : dim. 28 déc. 2008 18:16
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#5

Message par EvilRyu »

Est-ce peut-être parce que le vrai texte a détecter contient des caractères spéciaux? A savoir des crochets:

Code : Tout sélectionner

$szFile = @ScriptDir & "/fichier.txt"
$szText = FileRead($szFile,FileGetSize($szFile))

$szText = (StringRegExpReplace($szText, "([b][ list ][/b].*?[b][ /list ][/b])", "") & @LF)

FileDelete($szFile)
FileWrite($szFile,$szText)
 

En fait ce script sert a modifier des suuper-longs posts de forums en supprimant des balises LIST et leur contenu.
Image
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#6

Message par jguinch »

Oui, les crochets doivent être "échappés" car ils sont utilisés dans les expressions régulières :
$szText = (StringRegExpReplace($szText, "(\[ list \].*?\[ /list \])", "") & @LF)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
EvilRyu
Niveau 2
Niveau 2
Messages : 28
Enregistré le : dim. 28 déc. 2008 18:16
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#7

Message par EvilRyu »

Ah ok! On avance :lol:

Code : Tout sélectionner

$szFile = @ScriptDir & "/fichier.txt"
$szText = FileRead($szFile,FileGetSize($szFile))

$szText = (StringRegExpReplace($szText, "(\[ list \].*?\[ /list \])", "") & @LF)

FileDelete($szFile)
FileWrite($szFile,$szText)
Alors ça fonctionne si le texte est sur une ligne

Code : Tout sélectionner

[ list ] test [ /list ] lol [ list ] test [ /list ] lol [ list ] test [ /list ] lol
:arrow: donne bien lol lol lol

Mais vu que mon texte contient des retours a la ligne, ca ne fait rien du tout :cry:

Code : Tout sélectionner

[ list ]
test
[ /list ]
lol
[ list ]
test
[ /list ]
lol
[ list ]
test
[ /list ]
lol
 
Image
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#8

Message par jguinch »

Il faut spécifier dans ton expression que la recherche inclue les sauts de ligne :
$szText = (StringRegExpReplace($szText, "(?s)(\[ list \].*?\[ /list \])", "") & @LF)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
EvilRyu
Niveau 2
Niveau 2
Messages : 28
Enregistré le : dim. 28 déc. 2008 18:16
Status : Hors ligne

Re: [..] Suppression de texte entre deux mots spécifiques

#9

Message par EvilRyu »

PARFAIT! :o

Merci beaucoup c'est vraiment sympa! En plus j'ai beaucoup appris :wink:
Image
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Suppression de texte entre deux mots spécifiques

#10

Message par jguinch »

Juste une petite remarque, les parenthèses ne sont pas utiles ici :
$szText = StringRegExpReplace($szText, "(?s)(\[ list \].*?\[ /list \])", "") & @LF
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre