regexp différence entre (?:mot) et (mot)? - HTML/CSS - Programmation
Marsh Posté le 03-10-2006 à 13:33:15
j'aime bien la doc perl sur les regex: http://www.perl.com/doc/manual/html/pod/perlre.html
Tu y trouveras l'explication suivante:
Citation : (?:pattern) |
edit: remarque en js c'est du posix les regex ... enfin je crois
Marsh Posté le 03-10-2006 à 13:39:29
Heu là tu m'embrouilles encore plus
Marsh Posté le 03-10-2006 à 13:48:24
ok petit exemple simple
sur la chaine suivante "pouet pouet la pirouette" on applique les deux regex:
/(p(ouet))/g |
et
/(p(?:ouet))/g |
Avec la première tu as "pouet" dans $1 et "ouet" dans $2 ( deux fois à cause du g)
Avec la deuxieme tu as juste "pouet", le motif décrit dans la parenthèse contenant ?: n'est pas référencé, néanmoins ça te permet de les grouper.
Est-ce plus clair?
Marsh Posté le 03-10-2006 à 14:00:03
\/ Je t'aime
Jvais faire des tests cet aprem ou ce soir et jte redis ça
Marsh Posté le 03-10-2006 à 14:27:12
sinon j'ai trouvé un tester de regexp sympatique
http://www.codeproject.com/useritems/RegEx_Tracer.asp
et gratuit/open source
il doit être en .NET
il permet de tester une regexp rapidement, mais si on veut coloriser les groupes de mots dans la regexp c'est tout con, il suffit de faire des groupements avec les braces ()
Marsh Posté le 03-10-2006 à 13:28:35
Je suis en train de faire des tests de JS sur les regexp en ce moment. Et là je bloque sur un truc, quel est la différence entre (?:mot) et (mot)?
En prenant ce code :
J'obtiens ceci comme résultat
Regexp 'trucbidule'
match(/truc(bidule)?/) : trucbidule,bidule
match(/truc(?:bidule)/) : trucbidule
/truc(bidule)?/.test(str) : true
/truc(?:bidule)/.test(str) : true
Regexp 'trucmachin'
match(/truc(bidule)?/) : truc,
match(/truc(?:bidule)/) : null
/truc(bidule)?/.test(str) : true
/truc(?:bidule)/.test(str) : false
Mais là je ne vois toujours pas la différence entre (?:mot) et (mot)?
Je sais que dans la regexp suivant (que j'ai faite moi même)
truc(bidule)?
on matchera les mots :
truc, trucbidule, trucnimportequoi
D'après la spec (?:mot) c'est pour spécifier une écriture littérale pour respecter un mode objet mais bon en anglais c'est un peu lourd à lire
http://www.ecma-international.org/ [...] ma-262.pdf (page 34)
Si quelqu'un pouvais m'éclairer sur l'utilité d'une telle écriture et/ou me tourner vers des tutos anglais/francais pour bien comprendre l'animal.
Merci par avance
Message édité par gatsu35 le 03-10-2006 à 13:30:59