我是一名营销人员,正在制作一些正则表达式以使用工具抓取电话号码。我有以下正则表达式,可完美刮除XXX-XXX-XXXX格式的电话号码。这里的问题是页面在6条以上的不同行中都有数字,但是我只想在行包含<span no="telephone">
((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}
由于该页面的源代码,我尝试过一些获取字符串之间的电话号码的方式,这种方式无法正常工作,我只想尝试一下新的方式。
我的页面来源总是像
<a href="/phone/xxx-xxx-xxxx" data-toggle="tooltip" data-title="Mobile" >
<span itemprop="telephone">xxx-xxx-xxxx</span>
如何实现这一目标。非常感谢您的帮助。确保在标签<span itemprop="telephone">
答案 0 :(得分:0)
您可以使用以下正则表达式:
@"(?<=<span itemprop=""telephone"">)((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}(?=</span>)"
正则表达式首先创建look behind
,然后寻找:'<span itemprop="telephone">'
然后它使用您已经必须匹配电话号码的正则表达式。
最后,它使用look ahead
,查找:'</span>
'完成比赛。
答案 1 :(得分:0)
如果我已正确理解,您想知道<span no="telephone">
中的号码是否是使用正则表达式的可行电话号码?如果是这种情况,则以下内容将与您的字符串模式相匹配地吐出123-456-7891
string[] phoneNumber = lineContainingNumber.Split('>');
foreach (string phoneNumberEntity in phoneNumber)
{
if (Regex.IsMatch(phoneNumberEntity.Replace(@"</span", ""), @"\d{3}-\d{3}-\d{4}"))
{
Console.WriteLine(phoneNumberEntity.Replace(@"</span", ""));
break;
}
}