Webmaster Hub: Expression Régulière - Webmaster Hub

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Expression Régulière Noter : -----

#1 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 10:54

Bonjour,

Je travaille actuellement en Dotnet.

Je cherche le moyen de contrôler la validité d'une url en retournant True ou False :

www.google.fr = True
images.google.fr = True

test.php = False
test.test.php = False

Quelqu'un aurait il ca sous la main?

Merci :)


Portekoi
0

#2 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 11:21

Salut, tu cherche la regex en elle même ou une façon de faire ?

tu utilise quel langage en dotnet ?

sous c# tu peut faire une regex en faisant un "using System.Regularexpression"

ensuite tu test si la valeur entré correspond à une regex.

Voici comment je fais pour ma part :

Regex r = new Regex("http://([\\w-]+\\.)+[\\w-]+"
);
mc = r.Matche(codeSource);


http://([\\w-]+\\.)+[\\w-]+
, cherche la correspondance en testant tout les format d'url existant

remplate "codeSource" par zonedesaisie.text par exemple

une autre variante trés "primitive" serait :

@([http://]?)@([www.]?)(.*)@((.)(fr|info|com|org|net|asso)
(/?))

Ce message a été modifié par Kent - 12 avril 2007 - 11:22.

> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#3 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 11:30

Je suis en VB.net

Le problème, c'est que l'on force le http:// alors qu'il n'y est pas toujours :)
0

#4 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 11:32

l'instruction "?" te permet de rendre le groupe facultatif :

exemple :

http://([\\w-]+\\.)+[\\w-]+


deviendré
([http://]?)([\\w-]+\\.)+[\\
w-]+


Essai comme ça :)
> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#5 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 11:48

marche pas non plus :(

Function ISlinKExternal1(ByVal Url As String, ByVal Hostname As String)
        Dim page As String

        page = "http://" & LCase(Trim(Mid(Url, InStrRev(Url, "/") + 1)))

        Dim objIntPattern As New System.Text.RegularExpressions.Regex("([http://]?)([\\w-]+\\
.)+[\\w-]+")
        MsgBox(objIntPattern.IsMatch(page).ToString & " - " & page)
        Return objIntPattern.IsMatch(Url)
    End Function


0

#6 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 11:52

l'erreur se situe à quel niveau ? une exception ?

C'est la regex qui est incorrecte ?

Je viens de retrouver une vieille regex un peu basic mais tu peut toujours l'essayé :

http://(www.([a-zA-Z0-9]*|[-_]*)|([a-zA-Z0-9]*|[-_]*))(.net|.fr|.com|.net/|.fr/|.com/)

Ce message a été modifié par Kent - 12 avril 2007 - 11:55.

> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#7 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 11:55

Il me retourne false pour www.google.fr et http://www.google.fr

Je ne sais pas d'où cela viens :(
0

#8 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 11:57

page = "http://" & LCase(Trim(Mid(Url, InStrRev(Url, "/") + 1)))


Peut-être à cause de ça tu enleve le dernier aslash ? tu y fais quoi je saisi pas bien

Quand tu mets les http:// et que tu test avec cette regex


http://([\\w-]+\\.)+[\\w-]+


ça donne quoi ?

Ce message a été modifié par Kent - 12 avril 2007 - 12:00.

> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#9 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 12:00

En faites, le but pour moi, c'est qu'avec se style d'URL :

http://www.monsite.c.../www.google.com

J'isole la chaîne : www.google.com

Et je vérifie si c'est une url ou non :)

Même résultat avec http://([\\w-]+\\.)+[\\w-]+ :(
0

#10 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 12:06

Je crois qu'il vas falloir effectué les procedure de deboguage savoir si ça viens de la regex ou avant

fais un pas à pas.

verifie le contenu de page si tu as bien le nom de domaine uniquement. Ainsi tu vérifiera s'il a bien la forme d'une url.
isMatch ne te retourne pas true si la forme n'a effectivement pas de correspondance avec la regex.

En clair vérifie la forme de page apres tes Lcase Mid et Trim

Sinon essaie celle-ci

^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[
A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$


Trouvé ici

* Function ValidationURL(url)
* Dim modele
* set modele = New RegExp
* modele.pattern = "^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2, }[\43-\176]*$"
* modele.global = true
* ValidationURL = modele.test(url)
* End Function

C'est de l'asp mais les formats de regex sont les mêmes (microsoft oblige)

Ce message a été modifié par Kent - 12 avril 2007 - 12:11.

> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#11 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 13:21

Re,

Cela me renvoi "True" même pour test.php ou http://test.php

:(


Portekoi
0

#12 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 12 avril 2007 - 13:46

regarde ici , http://www.labo-dotnet.com/articles/Csharp...sharp/0/45.aspx

Il y'a des explications et des exemples pour les Regex

Mais que contient "page" après ton traitement ? cette partie est ok ?
> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#13 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 14:46

Page contient "www.google.fr" puis "test.test.php" par exemple

Je me rends compte que c'est quasi-impossible à faire. J'ai arpenté pas mal de site et je n'ai rien trouvé...

Pas grave, on va faire autrement :)

Merci en tout cas
0

#14 L'utilisateur est hors-ligne   KaRaK 

  • Groupe : Membre+
  • Messages : 738
  • Inscrit(e) : 14-juillet 05
  • Localisation:Lille

Posté 12 avril 2007 - 18:22

Bonsoir,

Deux idées me viennent à l'esprit en lisant ce topic.

1- Faire un test sur ce qui se situe après le deuxième point et vérifier si l'extension appartient à une liste d'extensions que tu as identifiées comme nom de domaine : .fr . com etc.

2 - Envoyer une requête sur éventuel domaine puis voir si il répond correctement.
3 liens pour référenceur coquin
Le site Outil Référencement : un vieux site sur le SEO.
Création de trafic avec Oseox (Tutoriels Référencement, Adwords et Développement web)
Actualité Web Marketing et Search Marketing : Blog Referencement encore un !
0

#15 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 12 avril 2007 - 19:30

Bonjour,

1 - Oui je me suis dis que j'allais faire comme ca mais comme c'est pour un logiciel, je vais me retrouver coincer s'il y a une nouvelle extension

2 - J'ai aussi essayé. J'ai trouve HttpWebRequest.

A voir :)

Merci


Portekoi
0

#16 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 13 avril 2007 - 08:17

Rebonjour , voici un coup de main pour httpWebRequest

public static string ouvrirUrl(string url)
        {
            HttpWebResponse HttpWResponse = null;
            StreamReader sr = null;
            try
            {
                HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(url);
                HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
               // Tu peut ici testé si HttpWResponse retourne quelque chose different de null 
            }
            catch (Exception ex)
            {
                 string Erreur = "Impossible d'éffectuer l'operation : " + ex.ToString();
                 return Erreur;
            }


> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#17 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 13 avril 2007 - 09:22

Et bien ca continue...

Voici mon code :
Try
            'Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
            Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("http://monserveur/damien/url/index.html"), HttpWebRequest)

            'Get the associated response for the above request.
            Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
            myHttpWebResponse.Close()
        Catch f As WebException
            Console.WriteLine(f.Message & "<--")

            If f.Status = WebExceptionStatus.ProtocolError Then
                Console.WriteLine("Status Code : {0}", CType(f.Response, HttpWebResponse).StatusCode)
                Console.WriteLine("Status Description : {0}", CType(f.Response, HttpWebResponse).StatusDescription)
            End If

        Catch f As Exception
            Console.WriteLine(f.Message & "<--")
        End Try



Mais j'ai cette erreur lors de l'exécution :
Une exception de première chance de type 'System.Net.WebException' s'est produite dans System.dll

EDIT : Apparemment, il me renvoie une erreur 401 pour mon site et avec google, j'ai une erreur de type 407 (proxy). Je pense savoir d'où sa viens :)
0

#18 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 13 avril 2007 - 09:49

Re,

J'ai ajouté ceci et tout fonctionne maintenant :
Dim myHttpWebRequest As HttpWebRequest
			myHttpWebRequest = CType(WebRequest.Create("http://www.google.fr"), HttpWebRequest)

			myHttpWebRequest.Proxy = System.Net.WebProxy.GetDefaultProxy
			myHttpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials

0

#19 L'utilisateur est hors-ligne   Kent 

  • Groupe : Hubmaster
  • Messages : 310
  • Inscrit(e) : 08-juin 06
  • Genre:Homme
  • Localisation:Avignon

Posté 13 avril 2007 - 10:14

Tu peut donc maintenant évaluer la validité d'une url tout simplement si elle reponds à une requette http plutôt que dans sa syntaxe ?
> Passionnés de mazda trouvez vos pièces mx5
> Virtualisation Le Pari: Virtualisation Le Pari
> Vêtements enfants rétro: fergus et rose
0

#20 L'utilisateur est en ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 13 avril 2007 - 11:04

Tout à fait mais je dois gérer aussi le StatusCode.

Je continue ^^
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)