La chaîne regex ne contient pas de sous-chaîne
Je suis en train d'essayer de correspondre à une chaîne qui ne contient pas de sous-chaîne
Ma chaîne commence toujours "http://www.domain.com/"
La sous-chaîne que je veux exclure de matches ".a/" qui vient après la chaîne de caractères (un nom de dossier dans le nom de domaine)
Il y aura des caractères dans la chaîne après la sous-chaîne je veux exclure
Par exemple:
"http://www.domain.com/.a/test.jpg" ne doit pas correspondre
Mais "http://www.domain.com/test.jpg" doit être
source d'informationauteur Joe Smalley
Vous devez vous connecter pour publier un commentaire.
Utiliser une anticipation négatif affirmation:
Rubular Lien
La partie
(?!\.a/)
correspond à rien d'autre que.a/
Mon conseil dans ce cas est de ne pas construire trop compliqué regexes avec anticipation négatif des assertions ou ce genre de chose.
Keep it simple and stupid!
Faire 2 matchs, l'un pour les points positifs, et de les trier plus tard, l'négatifs (ou l'inverse). La plupart du temps, les regexes devenu plus facile, si pas trivial.
Et votre programme devient plus claire.
Par exemple, pour extraire toutes les lignes avec toto, mais pas foobar, j'utilise:
Je voudrais essayer avec
Vous voulez correspondre à votre domaine, et tout ce qui ne pas continuer avec un . et tout ce qui n'continuer avec un . mais pas un
a
. (Éventuellement, vous pouvez ajouter vous /si nécessaire après)Si vous n'utilisez pas de regarder de l'avant, mais juste simple regex, vous pouvez simplement dire, si elle correspond à votre domaine, mais ne correspond pas à un
.a/
noter que
http://www.domain.com/.a
va passer le test, car il n'a pas de fin avec/
.