7
votes

Utilisation d'une regex C # pour analyser un nom de domaine?

J'ai besoin d'analyser le nom de domaine à partir d'une chaîne. La chaîne peut varier et j'ai besoin du domaine exact.

Exemples de chaînes: P>

www.somename.de


1 commentaires

Hey merci de l'avoir plus clair


4 Réponses :


2
votes

J'ai vérifié Library d'expression régulière , et on dirait quelque chose comme Cela pourrait fonctionner pour vous:

^(([\w][\w\-\.]*)\.)?([\w][\w\-]+)(\.([\w][\w\.]*))?$


2 commentaires

@Umair Ashraf - Vous devriez probablement expliquer comment cela ne fonctionne pas. Pouvez-vous donner un exemple de ligne qui ne correspond pas?


J'ai droit, j'ai mis cette ligne dans Regex Connstructor comme (@ "^ ((([\ w] [\ w \ - \.] *) \.)? ([\ W \ -] +) (\. ( [\ w] [\ w \.] *))? $ ")



1
votes

Essayez ceci:

string url = "http://www.google.com/hello";
Match match = Regex.Match(url, @"^(?:\w+://)?([^/?]*)");
string domain = match.Groups[1].Value;


0 commentaires

13
votes

Autre alternative à une solution de regex, vous pouvez laisser la classe system.uri code> analyse de la chaîne pour vous. Il vous suffit de vous assurer que la chaîne contient un schéma.

string uriString = "http://www.google.com/search";

if (!uriString.Contains(Uri.SchemeDelimiter))
{
    uriString = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriString);
}

string domain = new Uri(uriString).Host;


3 commentaires

Vos réponses sont également valables.


@AbDUnBaboor, que vous attendriez-vous? L'URL contient un nom d'hôte avec un espace de travail ("BLABLA") qui en fait un nom d'hôte non valide. Juste le "http: //" est également une URL invalide. Le constructeur URI s'attend à une URL valide.


1. Il dit l'URL valide si je retire l'espace. 2. J'ai essayé avec seulement Blabla, il est toujours dit que c'est une URL valide. Je pense que ça ne devrait pas.



11
votes

i simple utilisé xxx

car en utilisant cela, vous pouvez sûr.


1 commentaires

Vous ne pouvez pas être si sûr que votre solution accepte également "H t t p: / / h t t p: / / yee" comme une URL correcte (sans espaces, mais Stackoverflow change le double http: // en une ...