J'ai une telle réégycle: mais cela n'inclut pas les hashbangs et je veux éviter cela. P> p > (#!) code>. Qu'est-ce que je dois changer, pour le faire fonctionner? Je sais que je peux ajouter! Pour regrouper avec # @% code> etc., mais qui sélectionnera quelque chose comme p>
5 Réponses :
N'essayez pas de faire votre propre expression régulière pour faire correspondre les URL, utilisez quelqu'un d'autre qui a déjà résolu de tels problèmes, comme Celui-ci . P>
Bien qu'il n'y ait rien de mal à utiliser le code d'autre de quelqu'un, il n'y a rien de mal à écrire votre propre non plus! :) Je pense que si tout le monde suivrait la recommandation "N'essayez pas de faire votre propre
@MAC - Si tout le monde devait tout réinventer, nous progresserions beaucoup plus lentement. Bien mieux d'utiliser l'idée terminée de quelqu'un d'autre, puis de le faire mieux en l'améliorant ou en ajoutant quelque chose de nouveau à celui-ci. Même Newton a reconnu qu'il s'appuyait sur la fondation des travaux des autres.
@Mark - Je ne discute sûrement pas avec ça et je n'ai jamais dit que Tout le monde i> doit réinventer la roue! :) Je tiens simplement qu'il n'y a pas de règle difficile à suivre: Parfois, il est logique d'utiliser le travail d'autre, parfois ce n'est pas le cas.
@mac - Vous avez absolument raison. Cependant, nous devrions réduire doucement ceux qui écrivent des expressions régulières horribles pour copier le travail des autres jusqu'à ce qu'ils acquièrent suffisamment de connaissances afin de ne pas laisser de cauchemar d'autres personnes à maintenir. :) :)
La méthode de ce lien ne correspond pas à certaines URL valides, spécifiquement les éruptions d'URL. Je mettrais un exemple, mais je ne me laisse donc pas mettre des URL raccourcies. Mais spécifiquement, il ne fonctionne pas avec le raccourci de Twitter, 'https: // +' t.co '+' / bla ' code>.
La mise à jour de l'essence de GRUBER fonctionne avec les URL T.CO. Je vais mettre à jour le lien.
@kindall Il s'avère que j'ai fait une goof. Pycham pour une raison quelconque, lorsque vous le laissez réparer des lignes trop longues, et votre ligne est une chaîne triple-citée, elle insère un espace à la fin de votre chaîne ...
La regex dans le lien est terrible: il tente d'énumérer l'année 2011 des domaines de niveau supérieur connus et devient très rapidement obsolète.
Je vais admettre que je suis un peu inquiet d'une application qui nécessite une regex comme celle-ci pour correspondre aux URL. Cela dit, cela semble fonctionner pour moi:
((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)
Ceci est un problème courant, utilisez des bibliothèques par défaut. P>
pour Python Utilisez Urlparse p>
Urlparse persuaderait toujours l'URL du problème de l'op )
Eh bien c'est une URL valide, tout d'abord utilisez un analyseur d'URL pour obtenir les informations. Ensuite, vous pouvez décider quoi faire avec cela. Je doute qu'un analyseur sémantique soit vraiment ce qu'il veut, bien plus simple, c'est d'essayer l'URL. Si cela ne fonctionne pas, déposez les derniers personnages et essayez à nouveau ...
Cela pourrait être très long mais en pratique les mines fonctionnent plutôt bien. S'il vous plaît, essayez celui-la
Il correspond à tout l'exemple ci-dessous < / p> ((http | https) \: \ / \ / \ /)? [A-ZA-Z0-9 \. \ / \ \ \: @ \ -_ = # #] + \. ([A-ZA-Z ]) {2,6} ([A-ZA-Z0-9 \. \ & \ / \? \: @ \ -_ = # #]) * code>
J'ai essayé votre regex avec mon exemple de texte j'ai ouvert https://google.com et http://speedtest.net et www.standford.edu code> mais je ne reçois pas le résultat approprié. C'est comme ça que je reçois [(https: // ',' https ',' m ',' '), (' http: // ',' http ',' '), ( '', '', 'u', '')] code>
Cela dépend de si vous essayez. Si vous utilisez Python (n'ayez pas besoin de back slash \ caractères) ou de Jave ou autre chose. S'il vous plaît essayez-en son ici ici Regexr.com
Malheureusement, cette approche correspond à certaines chaînes inattendues telles que correspondant si vous avez.La.point que pas nécessairement est.a.site code>, vous pouvez coller sur pythex.org pour voir
Cela ne reconnaît pas les chaînes telles que https: // google / code> qui pourrait être utilisée comme URL valide. Votre regex nécessite un .com code> ou .NET code> à la fin.
basé sur Ce lien Nous pouvons utiliser la bibliothèque validateurs forte> par exemple: p>
Qu'en est-il de consulter le RFC pour la syntaxe URI ( ietf.org/rfc/rfc3986.txt)? Il vous montrera que le Bang ne peut être utilisé que de certaines manières, sinon il doit être échappé. Bonne question.
J'espère que vous n'essayez pas d'utiliser cette regex pour correspondre aux URL demandées par un navigateur: Si tel est le cas, vous devez réaliser que la pièce après le hachage est pas i> envoyé dans une demande client normale.
Non, je mesure la saisie de l'utilisateur et je fais des liens plus courts et plus sûrs pour les utilisateurs (nous avons le contrôle total, nous pouvons bloquer le lien, le domaine, etc.). Et avec une regex originale, il y avait urshortdomain.foo/urlhash/#!/Twitter/something "" >;)