C# 从web上抓取单元号

C# 从web上抓取单元号,c#,regex,C#,Regex,我是c.net的新手,我想从这个网站创建一个手机号码提取器 如果我有一个像olx.com.pk这样的网站,并且我已经从中提取了所有的链接,并且想从这些链接中提取数字,我想这样做 我怎么能做到这一点,我已经做了链接提取非常远想知道有关移动 这是我的链接提取器代码: private void button1_Click(object sender, EventArgs e) { WebBrowser wb = new WebBrowser(); wb.Scr

我是c.net的新手,我想从这个网站创建一个手机号码提取器

如果我有一个像olx.com.pk这样的网站,并且我已经从中提取了所有的链接,并且想从这些链接中提取数字,我想这样做

我怎么能做到这一点,我已经做了链接提取非常远想知道有关移动

这是我的链接提取器代码:

 private void button1_Click(object sender, EventArgs e)
    {
        WebBrowser wb = new WebBrowser();
        wb.ScriptErrorsSuppressed = true;
        wb.Url = new Uri(textBox1.Text);
        wb.DocumentCompleted += wb_DocumentCompleted;
    }

    void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlDocument code = ((WebBrowser)sender).Document;
        extract(code);
    }

    private void extract(HtmlDocument code)
    {

        HtmlElementCollection anchorList = code.GetElementsByTagName("a");

        foreach (var item in anchorList)
        {
            listBox1.Items.Add(((HtmlElement)item).GetAttribute("href"));
        }

    }
这是巴基斯坦手机号码的正则表达式


^\+92 | 0092-{0,1}\d{3}-{0,1}\d{7}$| ^\d{11}$| ^\d{4}-\d{7}$

如果链接集合部分正确,现在只需打开每个链接并使用以下方法进行匹配:

为了防止长号码也匹配,您可以使用:


0345 2567504忽略此数字!请现在做什么?您已经建议regexp要求数字为一个数字03452567504或用破折号分隔的0345-2567504,如果您希望它处理不同的格式,您必须添加它,或者将regex的最后部分从|\d{4}-\d{7}更改为|\d{4}[-]\d{7}或添加|\d{4}\s+\d{7}在regexp.bro的末尾,我再次打扰您,但是这个\d{11}描述的数字可以是11个数字字符,但是它得到的是页面中所有的数字字符,长度为11个字符,我只需要11个字符,以03开头,后面的字符就可以完成11个字符@CodyMan啊,我忘了:,在上面加了一段代码。。。还有文档链接
Regex re = new Regex(@"(\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7}");

foreach(string link in listBox1.Items){
    // Load data to `HtmlDocument code`
    string text = ((mshtml.IHTMLDocument3)code.DomDocument).documentElement.innerHTML;

    foreach( Match match in re.Matches(text)){
        // do what you need
    }
}
Regex re = new Regex(@"(?<!\d)((\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7})(?!\d)");