|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Étudiant Inscription : janvier 2008 Messages : 144 ![]() |
Bonsoir, mon problème est le suivant :
J'ai une chaine de cette forme la : Code :
"'xxxxx', 'yyyyyyy\'yyyyyyy', 'zzzzzzz'"; Voici mon regex de base : Code :
preg_match_all("#'[^(\')*]'#", $chaineDepart, $matches); |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 797 ![]() |
Salut,
si ta chaîne est réellement toujours du même type : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2008 Messages : 144 ![]() |
nn dsl ce n'est pas possible car a la place des xxxxxx yyyyy ou zzzzz c'est une chaine quelconque (qui peut donc contenir des ,).
Je ne peut faire sa qu'avec une expression mais je n'arrive pas a echapper \'. Il me mank juste cela. Mais merci kan meme |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 797 ![]() |
Je crois que ce pattern fonctionne :
Code :
preg_match_all("#('.*[^\\\]')#U", $chaineDepart, $matches); |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2008 Messages : 144 ![]() |
Merci ça fonctionne, merci beaucoup j'en voyais pas le bout. Par contre pourrait tu me fournir des explications, je ne comprend pas pourquoi sa marche et quelle était mon erreur.
Merci d'avance |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 797 ![]() |
En fait, tu peux pas mettre de parenthèses capturantes dans une classe de caractères donc en faisant [^(\')] tu dis de matcher tous les caractères sauf les caractères (\')*
Avec ce pattern #('.*[^\\\]')#U tu dis de matcher quote + n'importe quel caractère 0 à n fois + dernier caractère différent de \ + quote. Il faut que t'échappes le \ ça donne \\. Par contre je ne sais pas pourquoi on doit en mettre 3 ? J'imagine que sinon il échappe le dernier ] Et le modificateur 'U' permet de rendre l'expression non greedy, et de matcher le minimum de caractères possibles sinon il va matcher ta chaîne en entier. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com