probleme vb 2010 Regex.Matches[résolu]

La Team a résolu l'affaire... Mais ça peut toujours servir !
Répondre
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

probleme vb 2010 Regex.Matches[résolu]

Message par Nash »

Salut tous

Un petit probleme pour les regex avec vb 2010 :

exemple : sur une page web , je d lle texte :
Dim search As String = wc.DownloadString("www.adressemail.com")
je recupere mes infos :

je veux recuperer le texte "mes infos" qui se trouve entre les deux mots "exemple" :
Dim col As MatchCollection = Regex.Matches(search, "exemple" & "(.+?)" & "exemple")
et je l'ajoute a une listview :
For Each match1 As Match In col
Dim group1 As Group = match1.Groups(1)
With Me.ListView1.Items.Add(" " & group1.Value.ToString) '
End With
Next
ca marche nikel ! mais prenons un autre exemple :

sur cette page web : http://www.team-aaz.com/forum/" onclick="window.open(this.href);return false;

je veux recuperer le texte ligne 282 : "Nous sommes le Sam 15 Fév 2014 "

je n'ai pas de balises ou de mot pour situer le texte dans le regex.matches , comment puis je faire pour recuperer ses infos ?

j'ai parcouru les pages Microsoft ou ca parle vaguement de /n pour le retour a la ligne mais j'avoue ne rien comprendre et malgré pas mal de test , pas moyen de recuperer cette ligne :(

une ame charitable si possible en restant sur une fonction regex ?

je precise que les resultat du texte peuvent etre nombreux suivant la page et le texte d'où le matchcollection ! Que je ne connais pas par avance le texte a recuperer !
en gros pour simplifier ce que je veux c'est recuperer le texte entre 2 lignes , exemple pour la page aaz , le texte entre :

"<div id="time1"> et

</div>

Comment faire pour selectionner ce texte entre ces deux lignes ?

merci d'avance
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
palerider
Administrateur du site
Administrateur du site
Messages : 6380
Enregistré le : lun. 21 mars 2011 09:18
A remercié : 35 fois
A été remercié : 146 fois
    unknown unknown

Re: probleme vb 2010 Regex.Matches

Message par palerider »

Salut,

En ce qui me concerne je ne peux pas t'aider je n'y comprend rien ! :mrgreen:
J'aime les gens qui, pour briller, n'éteignent pas les autres.

Image
chrisnad
    unknown unknown

Re: probleme vb 2010 Regex.Matches

Message par chrisnad »

:D :D :D :D :D :D :D :D :D
tu rigole la nash c est plutôt a nous de te poser la question
:D :D :D :D :D :D :D :D
bon samedi :tmi: :rofl: :rofl: :rofl: :rofl:
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: probleme vb 2010 Regex.Matches

Message par Nash »

ok résolu en mettant \s*? avant et apres (.+?) ...
si mon anglais s'ameliore , ca doit representé le saut de ligne
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: probleme vb 2010 Regex.Matches[résolu]

Message par sh@rp »

loool

Tu sais très bien que ce genre de question "spécifique" se pose sur un forum de programmation...... hi hi hi...
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: probleme vb 2010 Regex.Matches[résolu]

Message par Nash »

j'avais posté a tout hasard tout en faisant mes recherches :)
Je me suis dis , vite fait pendant le demenagement , sh@rp passera peut etre par la :P

Effectivement , on trouve bien plus de contenu sur les forums anglais comme tu l'avais dit ;)
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Avatar du membre
sh@rp
Membre VIP
Membre VIP
Messages : 585
Enregistré le : mar. 1 févr. 2011 13:03
Contact :
    unknown unknown

Re: probleme vb 2010 Regex.Matches[résolu]

Message par sh@rp »

Nash a écrit :j'avais posté a tout hasard tout en faisant mes recherches :)
Je me suis dis , vite fait pendant le demenagement , sh@rp passera peut etre par la :P

Effectivement , on trouve bien plus de contenu sur les forums anglais comme tu l'avais dit ;)
ouff me reste plus que le garage à ranger sinon c'est tout bon pour le déménagement...... :)

Le regex est très puissant comme solution de recherche mais malheureusement quand on jette un oeil sur le rendu au niveau vitesse d'exécution c'est un tout autre dialogue qu'on doit tenir....... ;(

Ce que je te propose c'est de parser le résultat en utilisant ce genre de fonction :

Code : Tout sélectionner

  Private Function TextBetween(ByVal before As String, ByVal input As String, ByVal after As String) As String
        Dim splitStr As String = input.Split(New String() {before}, StringSplitOptions.None)(1)
        Return splitStr.Remove(splitStr.IndexOf(after))
    End Function
Comment l'utiliser :

Code : Tout sélectionner

   Dim HTML As String = File.ReadAllText("C:\html.html", System.Text.Encoding.Default)
        MsgBox(TextBetween("<div id=""time1"">", HTML, "</div>"))
Tu peux utiliser la méthode ".trim" pour supprimer les espaces vides en début et fin de chaine.

PS : Cette afonction est utile et valable quand tu es certains de l'unicité des balises dans un texte à parser. Il ne faut pas perdre de vue que si tu es amenés as récupérer plusieurs résultats en sortie qu'il faille préconiser l'utilisation du Regex malgré tout. ;)

Voilà la solution que je peux te proposer qui sans te le cacher m'a déjà servie dans mon projet M8FU.

A+
Le dev ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !
http://3dotdevcoder.blogspot.fr/
Avatar du membre
Nash
Administrateur du site
Administrateur du site
Messages : 4403
Enregistré le : sam. 6 nov. 2010 14:19
Localisation : 89
    unknown unknown

Re: probleme vb 2010 Regex.Matches[résolu]

Message par Nash »

merci de l'info , tester sur un fichier txt , et retour nikel du resultat...

j'ai essayer de l'adapter a YouTube-Get-And-Convert pour la recherche de titre mais pas moyen d'avoir un retour propre :(

je m'en tiendrais a la fonction regex...

mais je mets cette methode dans ma collection de script car ca servira surement un jour ;)

merci:)

edit :
PS : Cette afonction est utile et valable quand tu es certains de l'unicité des balises dans un texte à parser. Il ne faut pas perdre de vue que si tu es amenés as récupérer plusieurs résultats en sortie qu'il faille préconiser l'utilisation du Regex malgré tout. ;)
je comprends mieux alors :) car pour ce log , il me fallait une boucle pour ramener tous les résultats ;) et ca marchait moins bien que dans mon fichier txt :D
Image
• Ryzen 9 5900x
• B550 AORUS PRO 
• RTX 3060ti phoenix 
• thermaltake core p8 tg
• 1 x SSD 500GB   PCIe4 M.2 SEA
• 32 G DDR4 3600 corsaire
• Corsaire 1000w full modulaire passive
• MasterLiquid ML240R RGB
•1 to stockage NVME.M2 PCIe
Répondre