2 votes

Expression regex ne correspondant qu'à un mot entier

J'ai l'exemple de texte suivant

"dont pick descri@ption but pick @description only"

Quelle expression regex sélectionnera @description et omettre descri@ption ?

J'ai essayé ce qui suit

(?=\s)@\w+?(?=\W) --> ne choisit aucun d'entre eux

(?=\S)@\w+?(?=\W) --> choisit les deux

(?=\W)@\w+?(?=\W) --> choisit les deux

2voto

The fourth bird Points 40138

A propos des modèles que vous avez essayés

  • Le premier modèle ne correspond pas en raison de la présence de l'élément (?=\s) qui affirme que ce qui est directement à droite est un caractère d'espacement. Mais l'élément suivant est un @ Cette affirmation est donc fausse.

  • Les deuxième et troisième modèles correspondent parce que les assertions (?=\S) et (?=\W) sont toutes deux vraies pour un @ signe. Ensuite, cette partie @\w+?(?=\W) correspondra à des caractères d'un mot ou plus et s'assurera qu'à la fin il y a un caractère non verbal qui correspond aux deux.

Vous pourriez utiliser un lookahead et un lookbehind négatifs pour vous assurer que ce qui se trouve à gauche et à droite n'est pas un caractère sans espace.

Ensuite, utilisez une classe de caractères négatifs pour faire correspondre les caractères qui ne sont pas des @ ou un caractère d'espacement

(?<!\S)@[^@\s]+(?!\S)

Démonstration des expressions rationnelles

Si vous voulez faire correspondre des caractères de mots à la place :

(?<!\S)@\w+(?!\S)

0voto

Ronald Aaronson Points 200

Essayez :

(?:(\A|\s))(@[^@\s]+)(?=(\Z|\s))

Le "@" doit être précédé soit du début de la chaîne, soit d'un espace. Il doit ensuite être suivi par un ou plusieurs caractères qui ne sont ni un espace ni un "@". Enfin, la chaîne doit être suivie d'un espace ou de la fin de la chaîne.

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