expression régulière pour rechercher des mots entiers contenant seulement certains caractères
Je veux correspondre à des mots entiers (ou des chaînes vraiment) ne contenant que des caractères définis.
Par exemple, si les lettres sont d
, o
, g
:
dog = match
god = match
ogd = match
dogs = no match (because the string also has an "s" which is not defined)
gods = no match
doog = match
gd = match
Dans cette phrase:
dog god ogd, dogs o
...Je m'attends à de match sur dog
, god
, et o
(pas ogd,
à cause de la virgule ou dogs
en raison de la s
)
OriginalL'auteur user1179784 | 2012-05-23
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner pour vous
Explication
OriginalL'auteur Narendra Yadala
La regex suivante représente une ou plusieurs occurrences des trois personnages que vous cherchez:
Explication:
Les crochets signifient: "un des caractères entourés".
Le signe + signifie: "une ou plusieurs occurrences de l'expression précédente"
Ce serait exactement la même chose:
OriginalL'auteur jahroy
Qui regex saveur/outil utilisez-vous? (par exemple, JavaScript, .NET, Notepad++, etc.) Si c'est celui qui prend en charge la prospection et lookbehind, vous pouvez le faire:
De cette façon, vous n'obtiendrez que des matches, soit au début de la chaîne ou précédé d'un espace, ou à la fin de la chaîne ou suivie par des espaces. Si vous ne pouvez pas utiliser lookbehind (par exemple, si vous utilisez JavaScript), vous pouvez épeler le premier état:
Dans ce cas, vous permettrait de récupérer le résultat de groupe #1. Mais ne pas prendre la prochaine étape et essayer de remplacer l'anticipation avec
(?:$|\s)
. Si vous l'avez fait, du premier coup ("chien") consomme de l'espace de fin, et la regex ne serait pas en mesure de l'utiliser pour correspondre le mot suivant ("dieu").OriginalL'auteur Alan Moore
En fonction de la langue, ce qui devrait faire ce que vous avez besoin de faire. Il ne correspond à ce que vous avez dit ci-dessus;
cette regex:
dans une chaîne de ..
ne match..
Exemple en javascript
Exemple en php
Quoi que ce soit entre deux
[]
(entre parenthèses) est une classe de personnage.. il trouvera tous les caractères entre les crochets. Vous pouvez également utiliser des plages..[0-9]
,[a-z]
, etc, mais il ne sera match 1 caractère. Le+
et*
sont des quantificateurs.. le+
recherche 1 ou plusieurs caractères, tandis que le*
recherches de zéro ou plusieurs caractères. Vous pouvez spécifier un caractère explicite de la gamme avec des accolades({}
), de mettre un chiffre ou plusieurs chiffres dans l'entre-deux:{2}
correspond seulement 2 personnages, alors que{1,3}
correspondra à 1 ou 3.Quoi que ce soit entre
()
les parenthèses peuvent être utilisées pour les rappels, dites que vous voulez retourner ou utilisez les valeurs retournées comme des remplacements dans la chaîne. L' ?! est une anticipation négatif, il ne sera pas correspondre à la classe de caractères après, afin de s'assurer que les chaînes de caractères les caractères sont pas adapté lorsque les personnages sont présents.[\w\b,]
est incorrect. À l'intérieur d'une classe de caractères,\b
correspond à un retour arrière, sans un mot. Pourquoi quelqu'un voudrait correspondre à un retour arrière, je ne sais pas, mais une classe de personnage est censé consommer exactement un caractère à la fois, et la limite de mot\b
ne consomme rien.Je n'étais pas au courant. La fixation.
OriginalL'auteur Daedalus