Regex et sauts de lignes

Résolu
tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008
- 15 juin 2008 à 19:55
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010
- 16 juin 2008 à 08:30
Bonjour à tous,

ca fait 2 jours que je galère avec les expressions régulières et pourtant je cherche pas à faire quelque chose de tres compliqué:

jvous met un exemple tout de suite ca sera plus clair:

on a:

yyyyyyyyymachainexxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx;
yyyyyyyyyyyyyyyyyyyyyyyyyy

et en fait ce que je cherche à faire c'est mettre en commentaire machaine jusqu'au point virgule, sachant qu'il peut y avoir plusieurs lignes entre "machaine" et le ";" ou qu'ils peuvent se trouver sur la meme ligne :

yyyyyyyyy/*machainexxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx;*/
yyyyyyyyyyyyyyyyyyyyyyyyyy

j'écume les sites mais impossible de mettre la main sur une syntaxe qui pourrait m'aider....

alors à vot' bon coeur m'sieur dam'

 

10 réponses

tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008

16 juin 2008 à 00:26
bon alors:  avec (.*)machaine(.|\n)*;

si on a :

yyyyyyyyymachainexxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx;
yyyyyyyyyyyyy;yyyyyyyyyyyyyy
yyyyyyyyyyyyyyy;yyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyy;yy

on va obtenir:

yyyyyyyyy/*machainexxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx;
yyyyyyyyyyyyy;yyyyyyyyyyyyyy
yyyyyyyyyyyyyyy;yyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyy;*/yy

donc ce con il s'arrete au dernier point virgule...

La solution !!! enfin !!!

(.*)machaine([^;]*);

Donc il faut utiliser le négatif du délimiteur de fin (n'importe quel caractere unique sauf le point virgule).

et on peut donc recuperer ce qu'on voulait :

yyyyyyyyy/*machainexxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx;*/
yyyyyyyyyyyyy;yyyyyyyyyyyyyy
yyyyyyyyyyyyyyy;yyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyy;yy

merci bien Jleherpeur, ca fait plaisir de trouver de l'aide quand on est en galere.
3
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010

15 juin 2008 à 21:08
Salut,
tu galere sur quoi??

Voila une idée du pattern qui te permettra la recherche:

^machaine[a-zA-Z0-9_]*;$

Voila.

N'hésite pas si tu as des questions.
0
tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008

15 juin 2008 à 21:25
okay pour ce pattern, mais ya juste le underscore que je vois pas ce qu'il représente.

Mon soucis c'est que je dois prendre en compte les retours à la ligne, si ca n'avait pas été le cas j'aurais pu écrire : (.*)machaine(.*);
           et remplacer par:         /*$1machaine$2;*/

mais le point correspond à tous caractères sauf \n
c'est là le soucis car il peut y en avoir dans $2
 :-(
0
tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008

15 juin 2008 à 21:28
arf c'est embetant de pas pouvoir editer ses messages je rectifie :

okay pour ce pattern, mais ya juste le underscore que je vois pas ce qu'il représente.

Mon soucis c'est que je dois prendre en compte les retours à la ligne, si ca n'avait pas été le cas j'aurais pu écrire : (.*)machaine(.*);
           et remplacer par:         $1/*machaine$2;*/

mais le point correspond à tous caractères sauf \n
c'est là le soucis car il peut y en avoir dans $2
 :-(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010

15 juin 2008 à 21:29
Tu le met comme ca dans le pattern.

^machaine[a-zA-Z0-9\n]*;$
0
tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008

15 juin 2008 à 21:41
évidemment ce pattern ne marche pas pour moi, j'ai besoin de trouver comment representer : "tous caracteres ainsi que le retour a la ligne" donc pas uniquement des chifres des lettres et des \n mais vraiment tout ce qu'on peut taper.
0
tseu83
Messages postés
6
Date d'inscription
dimanche 15 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008

15 juin 2008 à 21:56
donc en gros j'ai besoin de savoir comment écrire la même chose que ceci >         .*
mais avec en plus les retours à la ligne, car hélas le point les exclu !!!!

Le point correspond (d'après les docs sur le net) à : tout caractère unique sauf le caractère de nouvelle ligne.
0
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010

15 juin 2008 à 23:10
ba si tu fais
^machaine[.\n]*;$

Ca marche pas??
0
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010

15 juin 2008 à 23:18
voila le pattern qui marche

machaine(.|\n)*;

Le pipe(|) correspond a OU

Alors on prend machaine puis tout ou retour a la ligne jusqu'a ;

Voila
0
Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
11 février 2010

16 juin 2008 à 08:30
De rien!!
0