strem
(...)
Messages : 434 Inscrit le 26/05/04
Ville : Lyon 3eme
Non connecté
|
|
Posté le 17 août 2005 - 13 h 41 m 37 s |
|
|
Salut salut,
J'ai trouvé la réponse à ma precedente question :
/^\s*echo\s*\"+[^]+\";$/
marche au poil !
Par contre, j'aimerais lui dire :
il peut y avoir tous les caracteres sauf celui ci : " sauf s'il est précédé de : \
Une idée ?
Bon, j'avance à petits pas, doucement, mais surement pour mon éditeur, mais j'aimerais un peu d'aide concernant les expressions regulieres :
J'aimerais par exemple remplacer " \\ commentaires \n" par " <font color=green>\\ commentaires</font> \n"
Donc : avec des espaces OU NON avant les \\, des espaces OU NON juste apres les \\ et des espaces OU NON a la fin des caracteres.
J'ai essayé :
/^\s+\/\/+\w/ comme regexp, mais il m'oblige a avoir des espaces. Bref, c'est le OU NON qui m'agace
autre exemple : remplacer " echo 'bla bla bla'; " par " <font color=blue>echo</font><font color=grey> 'bla bla bla';</font> " qui peut s'ecrire aussi "echo'bla bla bla';" (sans espaces). |
Merci de votre aide !
|
|
| |
Message édité 5 fois, la dernière par strem le 18 août 2005 - 16 h 41. |
| |
Moins le blanc est intelligent, plus le noir lui parait bete
|
Petit_PimoOosE
rsqrtps & pshufb
Messages : 4 617 Inscrit le 15/06/03
Ville : Montréal
Non connecté
|
|
Posté le 17 août 2005 - 18 h 40 m 22 s |
|
|
Mmh il te faut assertion arrière, ce qui se traduit par :
/([^"]|(?<!\\)")+/
edit : damn, je viens de lire que JS ne supporte pas ces assertions... on va essayer autrement.
Ah, d'après Friedl (l'auteur de Mastering Regular Expressions, mon livre de chevet), l'expression ultime de reconnaissance de chaîne de caractères (apostrophes doubles l'entourant compris) est (attention, accroche-toi) :
/"[^"\\]*(\\.[^"\\]*)*"/
qui en fait reconnaît l'apostrophe de début, puis ni \ ni " jusqu'à tomber sur un \ ; (*) là, on reconnaît un \ suivi de n'importe quoi (possiblement un ") puis ni \ ni " autant de fois que possible, puis on repart à (*), et ce autant de fois que possible. Enfin, on reconnaît le " final.
|
|
| |
Message édité 3 fois, la dernière par Petit_PimoOosE le 17 août 2005 - 21 h 51. |
| |
Huile de fraise.
|
knightmare
Modérateur
avec consommation
Messages : 4 865 Inscrit le 12/06/05
Ville : Lyon (Collonges)
Non connecté
|
|
Posté le 17 août 2005 - 19 h 31 m 33 s |
|
|
Le 17 août 2005 - 18 h 40, Petit_PimoOosE a écrit :
Ah, d'après Friedl (l'auteur de Mastering Regular Expressions, mon livre de chevet), l'expression ultime de reconnaissance de chaîne de caractères (apostrophes doubles l'entourant compris) est (attention, accroche-toi) :
/"[^"\\]*(\\.[^"\\]*)*"/
qui en fait reconnaît l'apostrophe de début, puis ni \ ni " jusqu'à tomber sur un \ ; (*) là, on reconnaît un \ suivi de n'importe quoi puis ni \ ni " autant de fois que possible, puis on repart à (*), et ce autant de fois que possible. Enfin, on reconnaît le " final.
|
Quelqu'un sait où sont les sous-titres sur ce forum ? J'ai besoin d'une traduction en Français là...
|
|
| |
Profitez de la vie et soyez heureux. C'est le plus important.
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 413 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 17 août 2005 - 19 h 49 m 28 s |
|
|
Le 17 août 2005 - 19 h 31, knightmare a écrit :
Le 17 août 2005 - 18 h 40, Petit_PimoOosE a écrit :
Ah, d'après Friedl (l'auteur de Mastering Regular Expressions, mon livre de chevet), l'expression ultime de reconnaissance de chaîne de caractères (apostrophes doubles l'entourant compris) est (attention, accroche-toi) :
/"[^"\\]*(\\.[^"\\]*)*"/
qui en fait reconnaît l'apostrophe de début, puis ni \ ni " jusqu'à tomber sur un \ ; (*) là, on reconnaît un \ suivi de n'importe quoi puis ni \ ni " autant de fois que possible, puis on repart à (*), et ce autant de fois que possible. Enfin, on reconnaît le " final.
|
Quelqu'un sait où sont les sous-titres sur ce forum ? J'ai besoin d'une traduction en Français là... 
|
Pour les sous-titres, c'est ici que ça se passe
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Petit_PimoOosE
rsqrtps & pshufb
Messages : 4 617 Inscrit le 15/06/03
Ville : Montréal
Non connecté
|
|
Posté le 17 août 2005 - 19 h 55 m 13 s |
|
|
Ben voyons ? Ça se lit comme du Pif & Hercules, les regex, non ?
|
|
| |
Huile de fraise.
|
dready
Modérateur
(¯¯`·.____[T3aM.R3cLu5]____.·´¯¯¯) (¯`·.__[T3aM.77]__.·´¯)
Messages : 8 918 Inscrit le 17/09/02
Ville : la montagne ;)
Non connecté
|
|
Posté le 17 août 2005 - 21 h 24 m 37 s |
|
|
Le 17 août 2005 - 19 h 55, Petit_PimoOosE a écrit :
Ben voyons ? Ça se lit comme du Pif & Hercules, les regex, non ?
|
on s'y fait  ca demande juste un poil plus de reflexion
|
|
| |
Message édité 1 fois, la dernière par dready le 17 août 2005 - 21 h 24. |
| |
il y a 3 grands mensonges en informatique
ça marche, c'est compatible et ça sort bientôt ^^
|
strem
(...)
Messages : 434 Inscrit le 26/05/04
Ville : Lyon 3eme
Non connecté
|
|
Posté le 18 août 2005 - 09 h 00 m 47 s |
|
|
Bon, javascript commence a m'em........ !
Pourquoi :
test.replace(/^(\n|\s)+(\echo\s*)("[^"\\]*(\\.[^"\\]*)*";)$/, "<font color=red>$2</font><font color=grey>$3</font>");
ca marche pas ?
Alors que la page : http://www.aidejavascript.com/article146.html#top_form
Me retourne le bon résultat dans l'area Détails ?
Désolé, mais la je vois pas
Petit_PimoOosE > A tes souhaits
Nan sérieux, ca déchire, ça marche nikel !
Joli !
Juste pour le fun : ma regex devient :
/^(\n|\s)+(\echo\s*)("[^"\\]*(\\.[^"\\]*)*";)$/
Tadaaaam ! Merci  |
|
|
| |
Message édité 2 fois, la dernière par strem le 18 août 2005 - 16 h 45. |
| |
Moins le blanc est intelligent, plus le noir lui parait bete
|
Petit_PimoOosE
rsqrtps & pshufb
Messages : 4 617 Inscrit le 15/06/03
Ville : Montréal
Non connecté
|
|
Posté le 18 août 2005 - 19 h 19 m 56 s |
|
|
Tu peux redire ce que tu cherches à attraper avec ^(\n|\s)+(\echo\s*) ?
Dis-moi si j'ai bien compris ce que tu cherches :
une ligne commençant par un ou plusieurs retours à la ligne et whitespaces, suivi d'un appel à echo.
J'aurais plutôt fait :
^\s*echo\s*(la regex de chaîne)
à moins que tu ne veuilles t'encombrer des espaces, retours à la ligne et du echo. Pourquoi captures-tu des retours à la ligne (souvent sources de foirage  ) ?
|
|
| |
Huile de fraise.
|
strem
(...)
Messages : 434 Inscrit le 26/05/04
Ville : Lyon 3eme
Non connecté
|
|
Posté le 19 août 2005 - 09 h 25 m 48 s |
|
|
ENFIN ! Voila le code :
1. var test = 'echo " o psdp ";';
2. var maReg = new RegExp('^(\\echo\\s*)("[^"\\\\]*(\\\\.[^"\\\\]*)*";)$', "g");
3. test2 = test.replace(maReg, '<font color=red>$2</font><font color=grey>$3</font>');
4. alert(test2);
Il fallait doubler ces \ a la c.. (Enfin je le suis, j'aurais du m'en douter plus tot, dans ces quotes...). Je suis un boulet...
Ben ca marche pas mieux... Jvais péter un plomb !
Ben dans une page de code, il y a souvent des :
1. // commentaire
2. echo " youpi ! ";
Il n'y a pas d'espaces apres le commentaire. Et imaginons qu'on tape (faute de frappe) :
if (conditionecho "youpi";
le regex ne sera plus bon. Mais je vais virer le \n pour voir si ca marche mieux. |
|
|
|
| |
Message édité 2 fois, la dernière par strem le 19 août 2005 - 09 h 51. |
| |
Moins le blanc est intelligent, plus le noir lui parait bete
|