Expression regulière avec caractères spéciaux

Expression regulière avec caractères spéciaux - PHP - Programmation

Marsh Posté le 02-07-2015 à 11:58:39    

Bonsoir à tous,
 
En php, je veux rechercher toutes les chaines de caractères qui commencent par # et qui finissent pas ;
 
J'ai essayé ceci :  
 
'/^#.*;$/'
 
Mais ça ne marche pas...
 
Une idée ?
 
Merci :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 02-07-2015 à 11:58:39   

Reply

Marsh Posté le 02-07-2015 à 13:38:10    

Le regex en soi à l'air bon. Peut-être faut rajouter un /g ou /m?
J'ai testé avec un truc en ligne et pour /^#.*;$/gm ça marche:
aaa;
bbb;
#ccc
#ddd; <---match
#eee#
##aaaa;; <---match

 

Ou alors un problème de syntaxe (les '' ?) avec le code autour?

 

edit: C'est bien sûr des '/' et non '\'.


Message édité par rat de combat le 02-07-2015 à 14:03:02
Reply

Marsh Posté le 02-07-2015 à 13:59:36    

Merci mais c'est de \ pas des / ?
 
Pour mettre le truc dans son contexte, j'ai une variable $var qui contient du texte, et, de temps en temps, quelque chose comme #include machin.php;  
 
L'idée est de retirer ce #include machin.php;
 
Je fais donc  
 
preg_replace('/^#.*;$/gm','',$var);
 
Mais avec le /gm (ou \gm) ça ne marche pas non plus :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 02-07-2015 à 14:03:41    

zezette a écrit :

Merci mais c'est de \ pas des / ?


Pardon, erreur de ma part, j'ai corrigé mon post. :o  

Reply

Marsh Posté le 02-07-2015 à 14:09:35    

mais ça marche quand même pas :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 02-07-2015 à 14:09:36    

Au pif, j'aurais pas des espaces avant le # ou après le ;? Je ne parle pas PHP mais vu les infos sur le net ton truc à l'air bon...

 

edit: ^\s*#.*;\s*$ ça donne quoi?


Message édité par rat de combat le 02-07-2015 à 14:11:22
Reply

Marsh Posté le 02-07-2015 à 14:34:29    

Ca ne marche pas non plus :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 02-07-2015 à 14:52:37    

preg_replace("/^#.*;\s*$/m", '', $var);
 

Code :
  1. <?php
  2. $pattern = '/^#.*;\\s*$/m';
  3. $replacement = '';
  4. $subject = '#include machin.php;
  5. et d\'autres trucs
  6. #include truc.php;
  7. blabla';
  8. echo preg_replace($pattern, $replacement, $subject, -1 );
  9. ?>


 
En sortie:  
et d'autres trucs blabla  
 
Testé ici: http://preg_replace.onlinephpfunctions.com/
le modificateur g n'y était pas le bienvenu quand j'ai testé.
 
Faut mettre des doubles quotes si vous passez la regexp directement à la fonction pour interpréter correctement les \s je pense. (je fais pas de PHP, mais c'est le fruit bâtard de l'accouplement de Perl et Apache, donc mon raisonnement a de bonnes chances d'être le bon).
 
A+,


Message édité par gilou le 02-07-2015 à 14:58:10
Reply

Marsh Posté le 02-07-2015 à 14:58:59    

Merci !!!
 
J'ai rien compris à ton expression régulière, mais ça marche :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 02-07-2015 à 15:09:57    

'/^#.*;\\s*$/m';
 
C'est pareil que "/^#.*;\s*$/m"
^# -> en début de ligne un #
;\s*$ -> en fin de ligne un ; suivi éventuellement de blanc(s)
.* -> entre les deux: des caractères  (d'ailleurs, ici, un + serait mieux qu'une *)
/.../m -> multiligne (si$var contient plus d'une ligne)
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed