Donc, voici ma question:Expression régulière pour correspondre à une chaîne uniquement lorsque certains caractères n'existent pas
J'ai un robot qui va et télécharge les pages Web et les bandes d'URL (pour l'avenir rampants). Mon robot fonctionne à partir d'une liste blanche d'URL qui sont spécifiées dans les expressions régulières, ils sont donc le long des lignes de:
(http://www.example.com/subdirectory/)(.*?)
... qui permettrait des URL qui ont suivi le modèle à rampé à l'avenir. Le problème que je vais avoir est que je voudrais exclure certains caractères dans les URL, de sorte que (par exemple) des adresses telles que:
(http://www.example.com/subdirectory/)(somepage?param=1¶m=5#print)
... dans le cas ci-dessus, à titre d'exemple, je d aimer pouvoir exclure les URL qui ont la fonction?, #, et = (pour éviter d'explorer ces pages). J'ai essayé pas mal d'approches différentes, mais je ne peux pas sembler obtenir le droit:
(http://www.example.com/)([^=\?#](.*?))
etc. Toute aide serait vraiment apprécié!
EDIT: désolé, devrait l'ai mentionné est écrit en Python, et je suis normalement assez compétent dans regex (bien que cela m'a déconcerté)
EDIT 2: La réponse de VoDurden (celui accepté ci-dessous) presque donne le résultat correct, tout ce qu'il a besoin est le caractère $ à la fin de l'expression et il fonctionne parfaitement - par exemple:
(http://www.example.com/)([^=\?#]*)$
Votre méthode a presque fonctionné - je l'ai essayée et ça a semblé ne pas fonctionner, j'ai donc ajouté $ à la fin, et ça semble fonctionner (ça va nécessiter plus de tests, mais votre méthode m'a juste sauvé beaucoup de temps!) : (http://www.example.com/subdirectory/)([^=\?#]*)$ – johneth
Mise à jour de la réponse avec le $ final. Assurez-vous de laisser un commentaire si vous trouvez d'autres problèmes lors des tests :) –