Exp Reg - commence par le mot

Le
Tony
J'utilise la fonction search de javascript sur une liste de phrases et
je souhaite avoir au final uniquement les phrases qui NE commencent
PAS par "Bonjour".
Je boucle donc sur mes phrases et j'interroge chacune avec search
contenant l'expression régulière suivante :
^[^(Bonjour)]
Si cette recherche est positive c'est que la phrase ne commencent pas
par "Bonjour" et je la mets de coté.

Mon problème :
J'ai quelques phrases qui ne commencent pas par "Bonjour" qui sont
tout de même absente de la sélection finale ce qui veut dire que mon
expression régulière fonctionne mal.

Une idée sur la synthaxe ?
Ma problèmatique est un peu plus complexe que celle énoncée et je ne
peux pas passer par autre chose qu'une expression régulière.

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Goiffon
Le #753019
Tony wrote:
J'utilise la fonction search de javascript sur une liste de phrases et
je souhaite avoir au final uniquement les phrases qui NE commencent
PAS par "Bonjour".
Je boucle donc sur mes phrases et j'interroge chacune avec search
contenant l'expression régulière suivante :
^[^(Bonjour)]
Si cette recherche est positive c'est que la phrase ne commencent pas
par "Bonjour" et je la mets de coté.

Mon problème :
J'ai quelques phrases qui ne commencent pas par "Bonjour" qui sont
tout de même absente de la sélection finale ce qui veut dire que mon
expression régulière fonctionne mal.

Une idée sur la synthaxe ?
Ma problèmatique est un peu plus complexe que celle énoncée et je ne
peux pas passer par autre chose qu'une expression régulière.


Vous ne donnez pas bcp d'exemple alors il n'est pas possible de vous
répondre. En attendant que vous donniez plus de détails, voyez du côté
de ce génial outil :
http://regulator.sourceforge.net

Olivier Miakinen
Le #753018
J'utilise la fonction search de javascript sur une liste de phrases et
je souhaite avoir au final uniquement les phrases qui NE commencent
PAS par "Bonjour".


Ok.

Je boucle donc sur mes phrases et j'interroge chacune avec search
contenant l'expression régulière suivante :
^[^(Bonjour)]


Pfff... il faudrait en faire une FAQ quelque part. Une expression
entre crochets [] matche un unique caractère, ainsi ^[^(Bonjour)] est
strictement équivalent à ^[^jnoru)B(] ou à [^Bnoujnouronn(BourBon)].

Pour ton besoin, du plus compliqué au plus simple, tu pourrais :
1) Utiliser les assertions négatives (personnellement je ne le
conseille pas).
2) Chercher /^Bonjour/ et considérer que le test est positif quand
la recherche est négative.
3) Prendre les 7 premiers caractères de ta chaîne et vérifier si
oui ou non le résultat est égal à "Bonjour".

Une idée sur la synthaxe ?
Ma problèmatique est un peu plus complexe que celle énoncée et je ne
peux pas passer par autre chose qu'une expression régulière.


Donc la solution (3) est à éliminer, mais vois du côté de la solution
(2) avant de devoir passer à la (1).

Dr J R Stockton
Le #752682
En fr.comp.lang.javascript
oups.com>, Tue, 4 Sep 2007 07:54:08, Tony
Mon problème :
J'ai quelques phrases qui ne commencent pas par "Bonjour" qui sont
tout de même absente de la sélection finale ce qui veut dire que mon
expression régulière fonctionne mal.


Str = phrase

JeLeVeux = QuelqueRegExp.test(Str) && ! /^Bonjour/.test(Str)

Mais est-ce que "Bonjour" doit etre suivi par /s/ ? /[ .,;?!]/ ?

--
(c) John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v6.05 IE 6
news:comp.lang.javascript FAQ
Mickaël Wolff
Le #752681

Mais est-ce que "Bonjour" doit etre suivi par /s/ ? /[ .,;?!]/ ?


Ce qui nous amène à : /^bBonjourb/.test('Bonjoir, tout le monde !')
En précisant que b est le délimiteur de mots
(http://www.commentcamarche.net/javascript/jsregexp.php3).

J'aime les regex :)
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Tony
Le #752679
On 4 sep, 18:13, Olivier Miakinen

J'utilise la fonction search de javascript sur une liste de phrases et
je souhaite avoir au final uniquement les phrases qui NE commencent
PAS par "Bonjour".


Ok.

Je boucle donc sur mes phrases et j'interroge chacune avec search
contenant l'expression régulière suivante :
^[^(Bonjour)]


Pfff... il faudrait en faire une FAQ quelque part. Une expression
entre crochets [] matche un unique caractère, ainsi ^[^(Bonjour)] est
strictement équivalent à ^[^jnoru)B(] ou à [^Bnoujnouronn(BourBon)].

Pour ton besoin, du plus compliqué au plus simple, tu pourrais :
1) Utiliser les assertions négatives (personnellement je ne le
conseille pas).
2) Chercher /^Bonjour/ et considérer que le test est positif quand
la recherche est négative.
3) Prendre les 7 premiers caractères de ta chaîne et vérifier si
oui ou non le résultat est égal à "Bonjour".

Une idée sur la synthaxe ?
Ma problèmatique est un peu plus complexe que celle énoncée et je ne
peux pas passer par autre chose qu'une expression régulière.


Donc la solution (3) est à éliminer, mais vois du côté de la solu tion
(2) avant de devoir passer à la (1).


Très bonne analyse
Je souhaitais néanmoins pouvoir le faire directement en expressions
régulières car cela ne me parassait pas une demande si extraordinaire.
Les autres méthodes vont me demander un plus de changement dans mon
code. Cela étant les assertions négatives du type ?<! semble répondre
à mon besoin mais la synthaxe ne semble pas être reconnu en javascript
sous IE.


Olivier Miakinen
Le #752332

Très bonne analyse


Merci, mais il n'était peut-être pas indispensable de tout citer...

Je souhaitais néanmoins pouvoir le faire directement en expressions
régulières car cela ne me parassait pas une demande si extraordinaire.
Les autres méthodes vont me demander un plus de changement dans mon
code.


Dans ce cas, peux-tu nous donner quelques lignes de ton code, pour que
l'on comprenne pourquoi « ! test » ne peut pas être mis à la place de
« test » ?

Cela étant les assertions négatives du type ?<! semble répondre
à mon besoin mais la syntaxe ne semble pas être reconnu en javascript
sous IE.


Ah, j'ai déjà rencontré le problème : ça doit être encore la différence
entre syntaxe Perl et syntaxe PCRE. À moins que tu n'aies oublié les
parenthèses ?

Au passage, tu n'as pas besoin d'une assertion du type (?<!Bonjour) mais
plutôt du type (?!Bonjour).

Publicité
Poster une réponse
Anonyme