Regex, à l'exception de certains mots
J'ai un problème avec la regex.
J'ai besoin de faire des regex, à l'exception d'un ensemble de mots, par exemple: pomme, d'orange, de jus de fruits.
et compte tenu de ces mots, elle correspond à tout sauf ces mots ci-dessus.
applejuice (match)
yummyjuice (match)
yummy-apple-juice (match)
orangeapplejuice (match)
orange-apple-juice (match)
apple-orange-aple (match)
juice-juice-juice (match)
orange-juice (match)
apple (should not match)
orange (should not match)
juice (should not match)
- Quelle est la langue que vous travaillez avec? Devraient également "jus d'orange" match ou pas?
- On dirait que vous voulez traiter le trait d'union comme un caractère de mot.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment le faire avec une seule expression régulière, vous pourriez trouver lookaround utile (surtout d'anticipation négatif dans cet exemple). Regex écrit pour Ruby (certaines implémentations ont une syntaxe différente pour lookarounds):
J'ai remarqué que
apple-juice
doit correspondre en fonction de vos paramètres, mais qu'en estapple juice
? Je pars du principe que si vous validezapple juice
vous voulez toujours à l'échec.Donc - permet de construire un ensemble de caractères qui comptent comme une "frontière":
Dans la plupart des regexp saveurs
\b
compte comme un "mot", mais la liste standard des "caractères de mot" ne comprend pas-
si vous avez besoin de créer un personnalisé. Il pourrait correspondre avec/\b(apple|orange|juice)\b/
si vous n'étiez pas en essayant d'attraper-
ainsi...Si vous ne testez que 'seul mot de" tests vous pouvez aller avec un de beaucoup plus simple:
Cela devient une partie de l'objectif:
va correspondre à une chaîne entière à moins qu'il ne se compose que de l'un des mots interdits.
Alternativement, si vous n'êtes pas à l'aide de Ruby, ou que vous êtes certain que vos chaînes contiennent pas de sauts de ligne ou que vous avez défini l'option que
^
et$
ne correspondent pas sur les débuts/fins des lignesfonctionnera également.
Quelque chose comme (PHP)
applejuice
et lancez donc une erreur de validation.