我是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}$
答案 0 :(得分:0)
您已将链接集合部分设置为正确,您现在要做的就是打开每个链接并使用text匹配Matches()
:
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
}
}
为防止更长的数字匹配,您可以使用negative lookahead/lookbehind expressions:
Regex re = new Regex(@"(?<!\d)((\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7})(?!\d)");