Recherches de mots

Parent Previous Next



Recherches de mots



Le sujet étant complexe, nous allons commencer par des choses simples, c'est-à-dire des recherches de mots. Ce n'est pas si anodin que ça, car il y a déjà moyen de faire beaucoup de choses. Comme nous venons de le voir, une regex s'écrit comme suit :

/contenu_de_la_regex/


Où « contenu_de_la_regex » sera à remplacer par ce que nous allons rechercher. Comme nous faisons du Javascript, nous avons de bons goûts et donc nous allons parler de raclette savoyarde. Écrivons donc une regex qui va regarder si dans une phrase le mot « raclette » apparaît :

/raclette/


Si on teste, voici ce que ça donne :

if (/raclette/.test('Je mangerais bien une raclette savoyarde !')) {

  alert('Ça semble parler de raclette');

} else {

  alert('Pas de raclette à l\'horizon');

}



Résumons tout ça. Le mot « raclette » a été trouvé dans la phrase « Je mangerais bien une raclette savoyarde ! ». Si on change le mot recherché, « tartiflette » par exemple, le test retourne false, puisque ce mot n'est pas contenu dans la phrase.


Si on change notre regex et que l'on met une majuscule au mot « raclette », comme ceci : /Raclette/, le test renverra false, car le mot « raclette » présent dans la phrase ne comporte pas de majuscule. C'est relativement logique en fait. Il est possible, grâce aux options, de dire à la regex d'ignorer la casse, c'est-à-dire de rechercher indifféremment les majuscules et les minuscules. Cette option s'appelle i, et comme chaque option (nous en verrons d'autres), elle se place juste après le slash de fermeture de la regex :

/Raclette/i


Avec cette option, la regex reste utilisable comme nous l'avons vu précédemment, à savoir :

if (/Raclette/i.test('Je mangerais bien une raclette savoyarde !')) {

  alert('Ça semble parler de raclette');

} else {

  alert('Pas de raclette à l\'horizon');

}



Ici, majuscule ou pas, la regex n'en tient pas compte, et donc le mot « Raclette » est trouvé, même si le mot présent dans la phrase ne comporte pas de majuscule.


À la place de « Raclette », la phrase pourrait contenir le mot « Tartiflette ». Pouvoir écrire une regex qui rechercherait soit « Raclette » soit « Tartiflette » serait donc intéressant. Pour ce faire, nous disposons de l'opérateur OU, représenté par la barre verticale pipe |. Son utilisation est très simple puisqu'il suffit de la placer entre chaque mot recherché, comme ceci :

if (/Raclette|Tartiflette/i.test('Je mangerais bien une tartiflette savoyarde !')) {

  alert('Ça semble parler de trucs savoyards');

} else {

  alert('Pas de plats légers à l\'horizon');

}



La recherche peut évidemment inclure plus de deux possibilités :

/Raclette|Tartiflette|Fondue|Croziflette/i

Avec cette regex, on saura si la phrase contient une de ces quatre spécialités savoyardes !


Début et fin de chaîne


Les symboles ^ et $ permettent respectivement de représenter le début et la fin d'une chaîne de caractères. Si un de ces symboles est présent, il indique à la regex que ce qui est recherché commence ou termine la chaîne. Cela délimite la chaîne en quelque sorte :

/^raclette savoyarde$/


Voici un tableau avec divers tests qui sont effectués pour montrer l'utilisation de ces deux symboles :


Chaîne

Regex

Résultat

Raclette savoyarde

/^Raclette savoyarde$/

true

Une raclette savoyarde

/^Raclette/

false

Une raclette savoyarde

/savoyarde$/

true

Une raclette savoyarde !

/raclette savoyarde$/

false




Créé avec HelpNDoc Personal Edition: Éditeur complet de livres électroniques ePub

Site à deux balles