157 votes

Les expressions rationnelles ne correspondent qu'à des mots entiers

J'ai une expression regex que j'utilise pour trouver tous les mots d'un bloc de contenu donné, sans tenir compte de la casse, qui sont contenus dans un glossaire stocké dans une base de données. Voici mon modèle :

/($word)/i

Le problème est que si j'utilise /(Foo)/i alors des mots comme Food être appariés. Il doit y avoir un espace blanc ou une limite de mot de part et d'autre du mot.

Comment puis-je modifier mon expression pour qu'elle corresponde uniquement au mot Foo lorsqu'il s'agit d'un mot au début, au milieu ou à la fin d'une phrase ?

2voto

X. L Points 131

Utiliser les limites des mots \b ,

Le texte suivant (avec quatre caractères d'échappement) fonctionne dans mon environnement : Mac, safari Version 10.0.3 (12602.4.8)

var myReg = new RegExp(‘\\\\b’+ variable + ‘\\\\b’, ‘g’)

0voto

gdibble Points 129

Obtenir tous les "mots" d'une chaîne

/([^\s]+)/g

En principe ^/s signifie qu'il faut faire une pause sur les espaces (ou faire correspondre des groupes de non espaces)
N'oubliez pas le g pour Greedy

Essayez-le :

"Not the answer you're looking for? Browse other questions tagged regex word-boundary or ask your own question.".match(/([^\s]+)/g)

→ (17) ["Not", "the", "answer", "you're", "looking", "for ?", "Browse", "other", "questions", "tagged", "regex", "word-boundary", "or", "ask", "your", "own", "question."]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X