Un regex qui tient compte des caractères d'échappement - PHP - Programmation
Marsh Posté le 18-02-2005 à 21:14:08
en remplaçant .*? par .*
(c'est bien sûr une blagounette, je précise)
edit: plus sérieusement:
il faut utiliser une "negative lookbehind assertion" ( (?<!...) )
En gros, une regexp qui est initialement
\".*?\" |
devient
\".*?((?<!\\)\" ) |
le 2e ' " ' ne match que s'il n'est pas précédé de ' \ '
Marsh Posté le 21-02-2005 à 18:46:33
Bah en fait non correction, excusez moi...
Mais ca ne marche pas!
Je vous montre ma nouvelle fonction avec ma nouvelle expression régulière:
Code :
|
Et voici l'erreur que j'ai:
Compilation failed: missing ) at offset 25
Donc j'ai bien compris que ca voulais dire qu'il manque une ) mais ou??? Moi je vois pas....
Marsh Posté le 21-02-2005 à 19:19:24
Code :
|
Marsh Posté le 21-02-2005 à 19:50:40
Code :
|
ca marche
source : http://www.regexlib.com/REDetails.aspx?regexp_id=355
Marsh Posté le 22-02-2005 à 01:14:18
Merci bien cette fois ci ca marche mais juste une petite dernière question avec des " à la place des " ca donnerai quoi comme expression parceque pour le moment j'ai mit un str_replace pour remplacer les " par un " mais je trouve pas ca trés top.
Marsh Posté le 22-02-2005 à 14:23:41
oups celle que j'avais mis ne marche pas
qui sait comment on met un \ dans une assertion arriere ??
Marsh Posté le 18-02-2005 à 21:10:00
Voilà en fait je travail sur un script de coloration syntaxique du code, qui permettrais également, entre autres, de détecter les erreurs les plus fréquentes.
Donc je me suis basé sur des choses élémentaires:
- Une parenthése ouvrante entraine un parenthése fermante.
- Une acollade ouvrante...
Donc un script qui compte les parenthèses dans le code saisi et qui fait la différence entre les deux est capable d'indiquer s'il en manque, logique.
Bon je parlais de coloration, et bien mon vrai problème c'est avec les caractéres d'échapement, parce qu'en fait je voudrais colorer les chaines qui se trouvent entre guillemets donc voici ma fonction:
Mais si comme code je met:
Et bien la coloration obtenue est la suivante:
echo "Hello le \"monde\"";
Logique me direz vous mais comment faire pour que cela ne se produise pas svp?
Message édité par dwogsi le 21-02-2005 à 18:44:37