2014-09-14 2 views
2

J'ai écrit tout ce code pour extraire des numéros de cellules à partir d'un site Web mais la chose est d'extraire les nombres parfaitement mais très lentement, il est également suspendu ma forme tout en extrayant, pleaase aide-moi à le faire fonctionner plus vite.Numéro de téléphone Extraction à l'aide de RegEx et HtmlAgilityPack Dans Vb.net

et de fonctionner plus efficacement.

Imports HtmlAgilityPack 
Imports System.Text.RegularExpressions 
Public Class Extractor 

Shared doc As New HtmlAgilityPack.HtmlDocument() 

Public Shared Function ScrapLinks(TextBox1 As TextBox, ListBox1 As ListBox, lbllinks As Label) 
    Dim hw As New HtmlWeb() 
    Try 
     doc = hw.Load(TextBox1.Text) 
     doc.LoadHtml(doc.DocumentNode.SelectSingleNode("//*[@id='ad_list']").InnerHtml()) 

     For Each link As HtmlNode In doc.DocumentNode.SelectNodes("//a[@href]") 

      Dim hrefValue As String = link.GetAttributeValue("href", String.Empty) 

      If hrefValue.Contains("/detail/") Then 
       If Not ListBox1.Items.Contains(hrefValue) Then 
        ListBox1.Items.Add(hrefValue) 
       End If 
      End If 
     Next 

    Catch ex As Exception 
     MsgBox("Error " + ex.Message) 

    End Try 
    Return Nothing 

End Function 

Public Shared Function Scrapnums(lstbox As ListBox,lstnum As ListBox) 
    Try 

     Dim hw As New HtmlWeb() 
     doc = hw.Load(lstbox.SelectedItem) 

     Dim data = doc.DocumentNode.SelectSingleNode("//*[@class='det_ad f_left']").InnerText 

     Dim m As Match = Regex.Match(data, "(\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7}") 


     If Not lstnum.Items.Contains(m.Value) Then 

      lstnum.Items.Add(m.Value) 

     End If 

    Catch ex As Exception 


    End Try 
    Return Nothing 

End Function 

End Class 
+0

Aidez-moi s'il vous plaît! –

+0

Cette question appartient à sur http://codereview.stackexchange.com/ –

+0

J'ai posé la question sur codereview Merci pour votre référence! –

Répondre

1

est ici un regex pour analyser les numéros de téléphone

Regex

((?(?=\+92|0092)(?:\+|00)92\d?(?:-\d{3}-?\d{7}|-?\d{9}|\d{10})|(?:\d{11}|\d{3}\s\d{3}\s\d{5,6}|\d{4}-\d{7}))) 

Nombre d'échantillons

+92-3113143446 
+923-113143446 
032 124 26003 
923 072 776037 
03154031162 
+923218923116 
0307-2796038 
+92-343-2842120 

Résultat

  • MATCH 1
    1. [0-14] +92-3113143446
  • MATCH 2
    1. [15-29] +923-113143446
  • MATCH 3
    1. [30-43] 032 124 26003
  • MATCH 4
    1. [44-58] 923 072 776037
  • MATCH 5
    1. [59-70] 03154031162
  • MATCH 6
    1. [71-84] +923218923116
  • MATCH 7
    1. [85-97] 0307-2796038
  • MATCH 8
    1. [98-113] +92-343-2842120

Démo

Online Demo

ci-dessus regex repose sur des hypothèses, il peut correspondre à plusieurs motifs alors énumérés ci-dessus. il faudra peut-être l'affiner au besoin.

+0

Merci bro aide moi beaucoup. –

+0

Je suis content que cela vous a aidé. Deuxièmement, ne vous inquiétez pas des votes négatifs, attendez un peu de temps pour voir s'il y a une réponse sur le chemin. Vous pouvez choisir de supprimer la question à tout moment, et vous récupérerez votre réputation perdue. dernier mais non le moindre, codage heureux :) – pushpraj

Questions connexes