Regex et sauts de lignes [Résolu]

tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 15 juin 2008 à 19:55 - Dernière réponse : Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention
- 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'

 
Afficher la suite 

10 réponses

Répondre au sujet
tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 16 juin 2008 à 00:26
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de tseu83
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 15 juin 2008 à 21:08
0
Utile
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.
Commenter la réponse de Jleherpeur
tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 15 juin 2008 à 21:25
0
Utile
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
 :-(
Commenter la réponse de tseu83
tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 15 juin 2008 à 21:28
0
Utile
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
 :-(
Commenter la réponse de tseu83
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 15 juin 2008 à 21:29
0
Utile
Tu le met comme ca dans le pattern.

^machaine[a-zA-Z0-9\n]*;$
Commenter la réponse de Jleherpeur
tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 15 juin 2008 à 21:41
0
Utile
é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.
Commenter la réponse de tseu83
tseu83 6 Messages postés dimanche 15 juin 2008Date d'inscription 16 juin 2008 Dernière intervention - 15 juin 2008 à 21:56
0
Utile
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.
Commenter la réponse de tseu83
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 15 juin 2008 à 23:10
0
Utile
ba si tu fais
^machaine[.\n]*;$

Ca marche pas??
Commenter la réponse de Jleherpeur
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 15 juin 2008 à 23:18
0
Utile
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
Commenter la réponse de Jleherpeur
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 16 juin 2008 à 08:30
0
Utile
De rien!!
Commenter la réponse de Jleherpeur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.