2010-07-24 4 views
0

Salut les gars Je cherche une expression régulière qui ne correspondra pas à une chaîne donnée qui est exactement égale à quelques mots clés que je vais déterminer manuellement.Expression régulière Exact Exact Mot clé

Le but est de modifier mon urlrewrite.xml qui peut accepter des expressions rationnelles au format suivant

<rule> 
    <from>^/location/([A-Z]+)/name/([A-Z]+)</from> 
    <to>/login?name=$2&location=$1</to> 
</rule> 

Par exemple, je veux rediriger tout après/qui n'est pas « login » et « inscription » à une autre page. J'essaie les suivants mais aucun ne satisfait ma demande.

^/(?!(login|signup).* 
^/(?!(login|signup)[A-Za-z0-9]+ 

parce que je veux qu'il corresponde uniquement si l'entrée est exactement « connexion » ou « inscription » cependant, il diminue « loginblabla », aussi.

Toutes les solutions sont très appréciées. :)

+0

Pouvez-vous utiliser la [fin de l'ancre de chaîne] (http://www.regular-expressions.info/anchors.html) '$'? – NullUserException

+0

Ne mettez pas * au début ou à la fin d'une regex, ce n'est pas nécessaire et cela rend le traitement beaucoup plus lent. Laissant dehors a exactement le même effet. –

+0

Je ne comprends pas ce que l'expression régulière doit faire. Pouvez-vous donner des exemples précis de ce que vous voulez faire correspondre et ne pas correspondre? Aussi, quelle langue? – tster

Répondre

1

Vous devez ajouter un point d'ancrage $ à la fin de la préanalyse:

^/(?!(login|signup)$)(.+) 

Maintenant, tout ce qui est pas exactement login ou signup seront capturés dans le groupe $1.

+0

+1 Cela serait plus logique que le mien, était un brainfart de gauche d'une autre excursion regex hier – Wrikken

+0

Il sera capturé en $ 2. $ 1 capturera la connexion ou l'inscription – Toto

+0

Droit. J'ai oublié d'ajouter '?:' Pour rendre ce premier groupe non-capturant –

Questions connexes