7
votes

regex pour correspondre à des mots entiers contenant uniquement certains caractères

Je veux faire correspondre des mots entiers (ou des cordes vraiment) qui ne contenant que des caractères définis.

Par exemple, si les lettres sont d , o , g : xxx

dans cette phrase: xxx

... Je m'attendrais à faire correspondre sur < code> chien , dieu et o (pas ogd, en raison de la virgule ou chiens En raison du s )


0 commentaires

4 Réponses :


5
votes

La regex suivante représente une ou plusieurs occurrences des trois caractères que vous recherchez: xxx

explication:

Les crochets signifient: " l'un des caractères ci-joints ".

Le signe plus signifie: " une ou plusieurs occurrences de l'expression précédente "

Ce serait la même chose: xxx


0 commentaires

2
votes

Selon la langue, cela devrait faire ce dont vous avez besoin pour faire. Cela ne correspondra que ce que vous avez dit ci-dessus;

Cette regex: xxx

dans une chaîne de .. / p> xxx

ne correspondra que. xxx

exemple dans JavaScript < p> exemple dans php

tout entre deux [] ( Les supports) est une classe de caractères .. Il correspondra à n'importe quel caractère entre les crochets. Vous pouvez également utiliser des gammes .. [0-9] , [a-z] , etc., mais il ne correspondra que 1 caractère. Le + et * sont des quantifiers .. Le + recherche 1 ou plusieurs caractères, tandis que le * recherche zéro ou plus de caractères. Vous pouvez spécifier une plage de caractères explicite avec des crochets bouclés ( {} ), la mise en place d'un chiffre ou de plusieurs chiffres entre: {2} ne correspondra que 2 caractères, tandis que < code> {1,3} correspondra à 1 ou 3.

Tout entre () par la parenthèse peut être utilisé pour rappel, disons que vous souhaitez retourner ou utiliser le Les valeurs renvoyées comme remplaçants dans la chaîne. Le ?! est un lookahead négatif, il ne correspondra pas à la classe de caractères après elle, afin de s'assurer que les chaînes avec les caractères sont non correspondées lorsque les caractères sont présents.


2 commentaires

[\ w \ b,] est incorrect. À l'intérieur d'une classe de caractères, \ b correspond à un backbspace, pas une limite de mot. Pourquoi quelqu'un voudrait-il faire correspondre une backcace que je ne sais pas, mais une classe de caractères est censée consommer exactement un caractère à la fois, et la limite de mot \ b ne consomme rien.


Je n'étais pas au courant de cela. Fixation.



15
votes

Ceci devrait fonctionner pour vous xxx

explication xxx


0 commentaires

3
votes

Quelle saveur / outil de regex utilisez-vous? (par exemple, JavaScript, .NET, NotePad ++, etc.) Si c'est celui qui prend en charge Lookahead et Lookbehind, vous pouvez le faire:

(?:^|\s)([dog]+)(?!\S)


0 commentaires