2009-03-13 7 views
3

J'ai un tas de contenu de la page Web dans ma base de données avec des liens comme celui-ci:Comment puis-je trouver tous les Guids dans un texte?

<a href="/11ecfdc5-d28d-4121-b1c9-1f898ac0b72e">Link</a> 

Cet identifiant unique est Guid l'ID de une autre page dans la même base de données.

Je voudrais explorer ces pages et vérifier les liens rompus.

Pour ce faire, je besoin d'une fonction qui peut renvoyer une liste de tous les Guids sur une page:

 
Function FindGuids(ByVal Text As String) As Collections.Generic.List(Of Guid) 
    ... 
End Function 

Je figure que c'est un travail pour une expression régulière. Mais, je ne connais pas la syntaxe.

Répondre

8
 
Function FindGuids(ByVal Text As String) As List(Of Guid) 
    Dim Guids As New List(Of Guid) 
    Dim Pattern As String = "[a-fA-F0-9]{8}-([a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12}" 
    For Each m As Match In Regex.Matches(Text, Pattern) 
     Guids.Add(New Guid(m.Value)) 
    Next 
    Return Guids 
End Function 
2

Il existe des moyens plus faciles à vérifier les liens cassés .... par exemple, je pense que http://www.totalvalidator.com/ va le faire: D

Cela pourrait aussi aider

static Regex isGuid = 
    new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled); 

puis

static bool IsGuid(string candidate, out Guid output) 
{ 
bool isValid = false; 
output=Guid.Empty; 
if(candidate!=null) 
{ 

if (isGuid.IsMatch(candidate)) 
{ 
    output=new Guid(candidate); 
    isValid = true; 
} 
} 
return isValid; 

}

+0

Cela semble pratique. Mais de nombreuses pages de ce site Web nécessitent une connexion et d'autres règles d'affaires que je dois gérer. –

+0

Le validateur total (avancé) fera aussi l'authentification! – inspite

+0

Je pense que c'est en fait la version Pro (pas avancée) – inspite

8

[0-9a-f ] {8} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {12}

3

Suggérez-vous d'obtenir une copie gratuite de expresso et d'apprendre à les construire!

est ici 10 seconde tentative sans optimisation, vérifie les majuscules et minuscules et crée un groupe de capture numérotée:

([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}) 

Ensuite, il vous suffit de parcourir les groupes appariés ...

Questions connexes